Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 多个表的上次更新触发器_Sql Server_Triggers - Fatal编程技术网

Sql server 多个表的上次更新触发器

Sql server 多个表的上次更新触发器,sql-server,triggers,Sql Server,Triggers,我们有一个表tbl_siteinfo,其中有两个字段:siteid pk和lastupdated 我们还有其他几个表,如tbl_用户、tbl_客户、tbl_价格、tbl_小时,它们包含不同类型的数据,但所有这些表都将siteid作为主键 我们希望创建触发器,使tbl_siteinfo中正确siteid行的lastupdated字段在任何其他表的任何插入/更新/删除操作中自动更新您可以访问通过已删除和插入的表更新的记录中的数据。看 因此,users表的触发器可能如下所示: CREATE TRIGG

我们有一个表tbl_siteinfo,其中有两个字段:siteid pk和lastupdated

我们还有其他几个表,如tbl_用户、tbl_客户、tbl_价格、tbl_小时,它们包含不同类型的数据,但所有这些表都将siteid作为主键


我们希望创建触发器,使tbl_siteinfo中正确siteid行的lastupdated字段在任何其他表的任何插入/更新/删除操作中自动更新

您可以访问通过已删除和插入的表更新的记录中的数据。看

因此,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
或者您可以在select siteid FROM inserted中执行WHERE siteid,而不是加入


因此,每个表需要三个触发器?@user1480192-您可以在触发器定义中指定动词列表,例如“for DELETE、INSERT、UPDATE”。它将为列出的任何操作触发@user1480192:是的,您需要在每个需要此功能的表上都有它。没有全局触发器概念,也不能定义要附加到多个触发器的单个触发器tables@user1480192-触发器可以执行存储过程,因此可以定义多个执行公共代码的触发器。在这种情况下,操作非常琐碎,不值得付出努力。