【问题标题】:SQL Server : trigger AFTER INSERT,UPDATESQL Server:在插入、更新后触发
【发布时间】:2015-01-15 09:58:01
【问题描述】:

在我的数据库中,我有这个触发器,它可以工作,但作为代码看起来真的很糟糕。

HOURS 包含一个idWork,在用户注册您的活动时进行了历史化。每个用户都分配了一个个人idWork

CREATE TRIGGER [dbo].[trg_HOURS_002]
   ON [dbo].[HOURS]
   AFTER INSERT,UPDATE
AS 
BEGIN
    Update [HOURS] 
    set idWork = (select U.idWork 
                  from [USER] U
                  where U.id = (select inserted.idUser from inserted))
     where id = (select inserted.id from inserted)  
END
GO

你能帮我把它做得更好吗?

【问题讨论】:

    标签: sql-server tsql triggers sql-server-2008-r2


    【解决方案1】:

    尝试将您的 sub-query 更改为 JOIN。像这样。

    UPDATE A
    SET    idWork = b.idWork
    FROM   [HOURS] A
           JOIN (SELECT U.idWork,
                        i.id
                 FROM   [USER] U
                        JOIN inserted I
                          ON U.id = i.idUser) B
             ON a.id = b.id 
    

    或者

    UPDATE A
    SET    idWork = b.idWork
    FROM   [HOURS] A
            JOIN inserted I
                ON a.id = I.id
            JOIN [USER] U
                ON U.id = i.idUser 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多