简体   繁体   English

SQL触发器检查以前的值

[英]SQL trigger to check previous value

I have a trigger on table tblA if the status is closed it inserts a record to table tblB . 我在表tblA上有一个触发器,如果​​状态closed它将向表tblB插入一条记录。 The below code is working, but I want it to be executed only if the previous status was NOT closed . 下面的代码正在工作,但是我希望仅在未closed先前状态的情况下才执行它。 How can I check it? 我该如何检查?

ON tblA
AFTER UPDATE
AS
  BEGIN
    SET NOCOUNT ON
    INSERT INTO tblB 
        (a_id, action, usr)
        select a.ID, 'closed', a.usr
        from tblA a
    WHERE a.Status LIKE 'closed';  
    END

A trigger in SQL Server is always suspect if it fails to access either inserted or deleted (or both), since those are the pseudo-tables that give you the details of what changed . 总是怀疑SQL Server中的触发器是否无法访问deleted inserteddeleted (或两者都失败),因为这些是伪表,可为您提供更改内容的详细信息。

You want something like: 您想要类似的东西:

INSERT INTO tblB 
    (a_id, action, usr)
    select a.ID, 'closed', a.usr
    from inserted a
            inner join
         deleted d
            on a.ID = d.ID
WHERE a.Status = 'closed'
  AND d.Status != 'closed';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM