有关SQL Server中的更新触发器的问题

时间:2014-04-15 19:10:32

标签: sql-server sql-server-2008 triggers sql-server-2012

我正在为表格更新后创建一个触发器。

该表包含c1,c2,c3,c4列,这些列c1,c2,c3,c4彼此独立

触发器应该是“如果在c4列上发生更新...应该调用触发器并且应该检索和修改c1列中的值”

我们如何处理这种情况?

提前致谢

3 个答案:

答案 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)检查列值是否更改,更新触发器中还有两个表inserteddeleted,您可以从inserted和oldvalue查询新值来自已删除