触发问题 [英] trigger question
问题描述
嗨!
我有一个有趣的问题。在插入/更新每第六行后,我需要编写一个触发器,即
.
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屋!