【发布时间】:2015-12-21 21:47:39
【问题描述】:
我在表中有 AFTER UPDATE 触发器:
ALTER TRIGGER [dbo].[table1]
ON [dbo].[table]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @primaryKey bigint
SELECT @PrimaryKey = PK FROM Inserted
if EXISTS(select * from [dbo].[table1] where PK=@PrimaryKey)
begin
update [dbo].[table1] set [Action] = 'U' where PK=@PrimaryKey
end
else
begin
insert into [dbo].[table1] ([PK], [Action], StampIn)
values (@PrimaryKey, 'U', GETDATE())
end
END
当我执行“更新 SOME_DB.dbo.TABLE set FIELD='NEW VALUE' where PK in (3,4,5)”时,我发现只有一行添加到 PK 为“3”的 table1。这意味着触发器在表中只执行了一次。
但我需要让 table1 中的所有行都更新了 PK。
你能帮我解决我的问题吗?
谢谢。
【问题讨论】:
-
SQL Server 触发器在整个语句中执行一次,而不是逐行执行。
标签: sql sql-server tsql triggers