如果在Sql Server触发器中我想测试UPDATE
语句中是否包含 not 列,
IF NOT UPDATE(column)
正确的语法?我已经阅读了一个更老的讨论,建议这可能不起作用,并且应该使用IF UPDATE(column)...ELSE
语法,除非我没有任何相关的声明要添加第一个条件。
答案 0 :(得分:2)
语法IF NOT UPDATE(column)
是正确的,可以通过以下简单测试进行验证,如@NoDisplayName所指出的那样:
CREATE TABLE dbo.Test(Id int, Foo int);
GO
INSERT INTO dbo.Test VALUES (1, 1);
GO
CREATE TRIGGER TestTrigger ON dbo.Test
AFTER UPDATE
AS
IF NOT UPDATE(Foo)
PRINT 'Foo Not Included In Update Statement';
IF UPDATE(Id)
PRINT 'Id Included In Update Statement';
GO
UPDATE dbo.Test SET Id = 1;
/*
output:
Foo Not Included In Update Statement
Id Included In Update Statement
*/
答案 1 :(得分:-1)
我现在没有服务器来检查这个,但是这就是你可以在更新中列出行的方法,其中" columnToCheck"没有改变。
CREATE TRIGGER trgMyTrigger ON [dbo].[myTable]
AFTER UPDATE
AS
SELECT
*
FROM inserted AS i
INNER JOIN deleted AS d ON i.ID = d.ID
WHERE i.columnToCheck = d.columnToCheck
GO