上次更新了多个表的触发器

时间:2013-04-21 12:04:48

标签: sql-server triggers

我们有一个包含两个字段的表tbl_siteinfo:siteid(pk)和lastupdated。

我们还有其他几个表,例如tbl_users,tbl_customers,tbl_prices,tbl_hours,它们包含不同类型的数据,但所有这些表都将siteid作为主键。

我们想要创建触发器,这将导致tbl_siteinfo中的lastupdated字段(对于正确的siteid行)在任何其他表上的任何插入/更新/删除操作上自动更新

1 个答案:

答案 0 :(得分:0)

您可以访问通过DELETED和INSERTED表更新的记录中的数据。请参阅MSDN

因此,users表的触发器可能如下所示:

CREATE TRIGGER tr_users_siteinfo ON tbl_users
    FOR UPDATE
AS
BEGIN
    UPDATE tbl_siteinfo SET lastupdated = GETDATE()
    FROM inserted JOIN tbl_siteinfo ON inserted.siteid = tbl_siteinfo.siteid
END
GO

或者你可以做一个WHERE siteid IN(选择siteid FROM inserted)而不是加入。

SQLFiddle