0

这个触发器正在制造问题,我找不到原因。

CREATE TRIGGER initialpay 
   ON  table1
   AFTER INSERT
AS 
BEGIN
SET NOCOUNT ON;
declare @value char
select @value = '1000000' from inserted

    update table1 
    set table1.column1 = @value

END

插入新行时,所有行的整列都会更新。我只想更新新插入的行。谁能告诉我问题是什么?

4

2 回答 2

4

您假设只插入了一行。您需要使您的触发器集面向,否则您将错过多行插入。

CREATE TRIGGER initialpay 
   ON  table1
   AFTER INSERT
AS BEGIN
    IF @@ROWCOUNT = 0 RETURN
    SET NOCOUNT ON;

    update t1
    set column1 = i.col
    from table1 t1
    join inserted i on t1.id = i.id

END
于 2013-11-12T14:15:46.277 回答
0

您必须使用如下语法:

 update table1 
 set table1.column1 = @value
 FROM inserted
 WHERE table1.id= inserted.id;
于 2013-11-12T14:10:43.997 回答