SQL Server触发器计数更新前更新的列

时间:2018-11-26 21:00:42

标签: sql-server triggers sql-update

我有一个名为“用户”的表,其中包含(id,名称,姓氏,dni,dob,city和lastUpdated)

我想做的是,执行触发器INSTEAD OF UPDATE,并在其中计算将要更新的列数,如果要更新的唯一列是“ lasUpdated”列,则不要更新任何内容。 / p>

CREATE TRIGGER USER_TRIGGER
ON USERS
INSTEAD OF UPDATE
AS
/* if the updated column is ONLY lasUpdated */
IF (COUNT(UPDATED_CLOUMNS) == 1 && UPDATED_COLUMN == "lasUpdated")
BEGIN 
ROLLBACK TRANSACTION
RETURN 
END
GO

任何想法如何实现呢? 预先谢谢你。

1 个答案:

答案 0 :(得分:1)

一种方法是使用以下命令在INSTEAD OF触发器中进行更新:

WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"

请注意,如果任何列可以为NULL,则也需要在逻辑中进行处理。