我已经创建了一个触发器,用于根据插入到T1中的内容将一些值插入到T2中。这用于通过监视报告中两个不同状态值之间的Status和date diff的值来审计进程所用的时间。
如果i.IdNumber和i.status存在于不执行任何操作的tblEX1StatusChangeLog表中,那么我缺少在哪里包含条件。
任何帮助都将不胜感激,并提前表示感谢。
我的问题是,如果以任何方式修改了相关对象,我会看到重复的状态值和IdNumber,其中它们只应该是每个ID号的唯一状态。我知道我可以修改报告中的数据以提供所需的结果,即使有重复的数据,但是我希望最小化进入changelog表的数据。
create trigger trgEx1StatusChange
on tblEx1
after update, insert
as
begin
insert into tblEx1StatusChangeLog (IdNumber, UpdatedOn, Status, updatedby)
select i.IdNumber, GETDATE(), i.Status, SUSER_NAME()
from tblQuotes as t
inner join inserted as i on t.IdNumber = i.IdNumber
end 我想看看这些结果
IdNumber UpdatedOn Status UpdatedBy
----------------------------------------------
100001 04102019 Open domain/user
100001 04132019 Closed domain/user不
IdNumber UpdatedOn Status UpdatedBy
----------------------------------------------
100001 04102019 Open domain/user
100001 04102019 Open domain/user (if the object related to idNumber-100001 is edited but status is not changed)
100001 04132019 Closed domain/user发布于 2019-04-14 00:34:16
您可以使用not exists
create trigger trgEx1StatusChange on tblEx1 after update, insert
as
begin
insert into tblEx1StatusChangeLog (IdNumber, UpdatedOn, Status, updatedby)
select i.IdNumber, GETDATE(), i.Status, SUSER_NAME()
from tblQuotes t join
inserted i
on t.IdNumber = i.IdNumber
where not exists (select 1
from tblEX1StatusChangeLog cl2
where cl2.IdNumber = i.IdNumber and
cl2.Status = i.status
);
end ;https://stackoverflow.com/questions/55667602
复制相似问题