我正在为表格更新后创建一个触发器。
该表包含c1,c2,c3,c4列,这些列c1,c2,c3,c4彼此独立
触发器应该是“如果在c4列上发生更新...应该调用触发器并且应该检索和修改c1列中的值”
我们如何处理这种情况?
提前致谢
答案 0 :(得分:1)
尝试这样的事情。 UPDATE是一个棘手的小功能,但可以快速访问您要求的内容。
UPDATE UT
SET
UT.C1 = CASE WHEN UPDATE(C4) THEN I.C4 ELSE UT.C1 END
FROM
UnderlyingTable AS UT
INNER JOIN inserted AS I ON (UT.PrimaryKey = I.PrimaryKey)
答案 1 :(得分:0)
您可以使用AFTER/INSTEAD OF TRIGGER
。
将INSERTED
表与DELETED
表进行比较,以查看哪些列已更新,然后执行逻辑。
您也可以使用Column_Updated(columnName)
,但这可能会导致将记录更新为相同的值。
了解更多信息: http://technet.microsoft.com/en-us/library/ms191300.aspx
答案 2 :(得分:0)
您可以使用Columns_Updated(columnName)
检查列值是否更改,更新触发器中还有两个表inserted
和deleted
,您可以从inserted和oldvalue查询新值来自已删除