【发布时间】:2018-11-26 21:00:42
【问题描述】:
我有一个名为“Users”的表,其中包含(id、name、lastname、dni、dob、city 和 lastUpdated)
我想做的是,执行一个触发器 INSTEAD OF UPDATE 并在其中计算将要更新的列数,如果要更新的唯一列是“lasUpdated”列,则不要更新任何内容。
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
知道如何实现它吗? 提前谢谢你。
【问题讨论】:
-
使用
columns_updated()(docs.microsoft.com/en-us/sql/t-sql/functions/…) 您需要实际运行更新并打印位模式才能知道您要查找的模式, -
您可能也不想要
instead of update触发器,因为您必须手动执行任何所需的更新。您可以使用和after update触发器来实现您的既定目标。
标签: sql-server triggers sql-update