触发问题 [英] trigger question

查看:39
本文介绍了触发问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!


我有一个有趣的问题。在插入/更新每第六行后,我需要编写一个触发器,即
.


CREATE TABLE [dbo]。[PODACI](

[sifrob] varchar(13)COLLATE Croatian_CI_AS NOT NULL,

[sifoj] varchar(2)COLLATE Croatian_CI_AS DEFAULT'''',

[katbroj] varchar(15)COLLATE Croatian_CI_AS DEFAULT'''',

[minzal] int DEFAULT 0,

[minzalpak] int DEFAULT 0,

[optzal] int DEFAULT 0,

[optzalpak] int DEFAULT 0,

[maxzal] int DEFAULT 0,

[maxzalpak ] int DEFAULT 0,

[nazoj] varchar(15)COLLATE Croatian_CI_AS DEFAULT'''',

[prodkol] int DEFAULT 0,

[pak] int DEFAULT'''',

[pakvel] int DEFAULT'''',

[optzaluk] int DEFAULT 0,

[optzalpakuk] int DEFAULT 0,

[ind] varchar(2)COLLATE Croatian_CI_AS DEFAULT''''




INSERT INTO [PODACI] VALUES

(''30300991'',''01'',''23 .276.00'',1,1,1,1,1,1,''PUSCINE'',1,1,0,4,
4,'''')

INSERT INTO [PODACI] VALUES

('''30300991'',''03'',''23 .276 .00'',1,1,1,1,1,1,'''ZAGREB'',1,1,0,4,4,

'''')

INSERT INTO [PODACI]

VALUES

(''30300991'',''05'',''23 .276.00'',1,1 ,1,1,1,1,''SPLIT'',1,1,0,4,4,

'''')

INSERT INTO [PODACI ] VALUES

(''30300991'',''07'',''23 .276.00'',0,0,0,0,0,0,'''CAKOVEC'',1 ,1,0,4,

4,'''')

INSERT INTO [PODACI] VALUES

('''30300991'' ,''09'',''23 .276.00'',1,1,1,1,1,1,''RIJEKA'',1,1,0,4,4,

''''

插入[PODACI]价值

(''30300991'',''11'' ,''23 .276.00'',0,0,0,0,0,0,''OSIJEK'',1,1,0,4,4,

'''')


现在,触发器被触发................................


触发器应该得到SUM(optzalpak)WHERE sifrob =''30300991''并更新

列optzalpakuk,其中sifrob =''30300991''值。

插入语句继续................................. />
有什么想法吗?

谢谢,

Zvonko


Hi!

I have a interesting problem. I need to write a trigger that wil go off
after every sixth row is inserted/updated.

CREATE TABLE [dbo].[PODACI] (
[sifrob] varchar(13) COLLATE Croatian_CI_AS NOT NULL,
[sifoj] varchar(2) COLLATE Croatian_CI_AS DEFAULT '''',
[katbroj] varchar(15) COLLATE Croatian_CI_AS DEFAULT '''',
[minzal] int DEFAULT 0,
[minzalpak] int DEFAULT 0,
[optzal] int DEFAULT 0,
[optzalpak] int DEFAULT 0,
[maxzal] int DEFAULT 0,
[maxzalpak] int DEFAULT 0,
[nazoj] varchar(15) COLLATE Croatian_CI_AS DEFAULT '''',
[prodkol] int DEFAULT 0,
[pak] int DEFAULT '''',
[pakvel] int DEFAULT '''',
[optzaluk] int DEFAULT 0,
[optzalpakuk] int DEFAULT 0,
[ind] varchar(2) COLLATE Croatian_CI_AS DEFAULT ''''
)

INSERT INTO [PODACI] VALUES
(''30300991'', ''01'', ''23.276.00'', 1, 1, 1, 1, 1, 1, ''PUSCINE'', 1, 1, 0, 4,
4, '''')
INSERT INTO [PODACI] VALUES
(''30300991'', ''03'', ''23.276.00'', 1, 1, 1, 1, 1, 1, ''ZAGREB'', 1, 1, 0, 4, 4,
'''')
INSERT INTO [PODACI]
VALUES
(''30300991'', ''05'', ''23.276.00'', 1, 1, 1, 1, 1, 1, ''SPLIT'', 1, 1, 0, 4, 4,
'''')
INSERT INTO [PODACI] VALUES
(''30300991'', ''07'', ''23.276.00'', 0, 0, 0, 0, 0, 0, ''CAKOVEC'', 1, 1, 0, 4,
4, '''')
INSERT INTO [PODACI] VALUES
(''30300991'', ''09'', ''23.276.00'', 1, 1, 1, 1, 1, 1, ''RIJEKA'', 1, 1, 0, 4, 4,
'''')
INSERT INTO [PODACI] VALUES
(''30300991'', ''11'', ''23.276.00'', 0, 0, 0, 0, 0, 0, ''OSIJEK'', 1, 1, 0, 4, 4,
'''')

Now, the trigger is triggered ................................

Trigger should get SUM(optzalpak) WHERE sifrob = ''30300991'' and update the
column optzalpakuk where sifrob = ''30300991'' with that value.
And insert statements go on .................................
Any ideas?
Thanks,
Zvonko


推荐答案

Zvonko写道:
我有一个有趣的问题。在插入/更新每第六行后,我需要编写一个触发器。


你为什么要这样做?

触发器应该得到SUM(optzalpak)WHERE sifrob ='''30300991''并更新
列optzalpakuk其中sifrob =''30300991''具有该值。
I have a interesting problem. I need to write a trigger that wil go off
after every sixth row is inserted/updated.
Why would you want to do that ?
Trigger should get SUM(optzalpak) WHERE sifrob = ''30300991'' and update the
column optzalpakuk where sifrob = ''30300991'' with that value.




您的意思是SUM(optzalpak)FROM inserted或者SUM(optzalpak)来自PODACI



换句话说,你想要在

语句中插入的值的总和或表中所有值的总和(对于受影响的

" sifrob")?


Razvan



You mean "SUM(optzalpak) FROM inserted" or "SUM(optzalpak) FROM PODACI"
?
In other words, you want the sum of the values inserted in that
statement or the sum of all values from the table (for the affected
"sifrob") ?

Razvan




" Razvan Socol" < RS **** @ gmail.com>在消息中写道

news:11 ********************** @ r2g2000cwb.googlegro ups.com ...

"Razvan Socol" <rs****@gmail.com> wrote in message
news:11**********************@r2g2000cwb.googlegro ups.com...
您的意思是SUM(optzalpak)FROM inserted或者SUM(optzalpak)FROM PODACI

换句话说,你想要在
语句中插入的值的总和或者表中所有值的总和(对于受影响的
sifrob)?

Razvan
You mean "SUM(optzalpak) FROM inserted" or "SUM(optzalpak) FROM PODACI"
?
In other words, you want the sum of the values inserted in that
statement or the sum of all values from the table (for the affected
"sifrob") ?

Razvan



我的意思是受影响的sifrob表中所有值的总和。


Zvonko


I mean sum of all values from the table for the affected sifrob.

Zvonko


Zvonko(zv************@velkat.net)写道:
Zvonko (zv************@velkat.net) writes:
我有一个有趣的问题。我需要编写一个触发器,在每插入/更新第六行后关闭
I have a interesting problem. I need to write a trigger that wil go
off after every sixth row is inserted/updated.




这实际上是不可能的。对于初学者来说,每个

语句触发一次触发器,那么如果你一次插入35行怎么办?


我认为你需要重新制定要求。你真的想要实现什么?
-

Erland Sommarskog,SQL Server MVP, es **** @ sommarskog.se


SQL Server 2005联机丛书
http://www.microsoft.com/technet/pro .. .ads / books.mspx

SQL Server 2000联机丛书
http://www.microsoft.com/sql/prodinf...ons/books.mspx



That is not really possible. For starters, a trigger fires once per
statement, so what if you insert 35 rows in one go?

I think you need to reformulate the requirement. What do you really
want to achieve?
--
Erland Sommarskog, SQL Server MVP, es****@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pro...ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinf...ons/books.mspx


这篇关于触发问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆