首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server触发器中的条件检查

SQL Server触发器中的条件检查
EN

Stack Overflow用户
提问于 2019-04-14 00:29:52
回答 1查看 37关注 0票数 1

我已经创建了一个触发器,用于根据插入到T1中的内容将一些值插入到T2中。这用于通过监视报告中两个不同状态值之间的Status和date diff的值来审计进程所用的时间。

如果i.IdNumberi.status存在于不执行任何操作的tblEX1StatusChangeLog表中,那么我缺少在哪里包含条件。

任何帮助都将不胜感激,并提前表示感谢。

我的问题是,如果以任何方式修改了相关对象,我会看到重复的状态值和IdNumber,其中它们只应该是每个ID号的唯一状态。我知道我可以修改报告中的数据以提供所需的结果,即使有重复的数据,但是我希望最小化进入changelog表的数据。

代码语言:javascript
运行
复制
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 

我想看看这些结果

代码语言:javascript
运行
复制
IdNumber   UpdatedOn    Status    UpdatedBy
----------------------------------------------
100001     04102019     Open      domain/user
100001     04132019     Closed    domain/user

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

回答已采纳

发布于 2019-04-14 00:34:16

您可以使用not exists

代码语言:javascript
运行
复制
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 ;
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55667602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档