在sql server中插入新行时更新列

时间:2013-11-12 13:59:16

标签: sql sql-server

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

您必须使用以下语法:

 update table1 
 set table1.column1 = @value
 FROM inserted
 WHERE table1.id= inserted.id;