[英]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
inserted
或deleted
(或两者都失败),因为这些是伪表,可为您提供更改内容的详细信息。
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.