我在Ms SQL Server中有以下设置
ID uniqueidentified
状态nvarchar('未知',' InProgress','已完成')
其他栏目......
ID uniqueidentified
LastModifiedDate Date
其他栏目......
TableA有一个Update触发器,每次TableA发生更改时都会更改TableB上的LastModifiedDate
TableB有一个触发器,每次更改LastModifiedDate时都会将消息放入SSB队列。
问题:如何修改TableB的触发器,使其仅在表的状态完成时才会触发。
挑战在于,在TableA中修改StatusA期间,TableB中导致的触发器无法访问tableA的最新值(例如,已完成)
我对以下内容不感兴趣: 1)向TableB添加另一列,当Status ==完成时,将由TriggerA修改 2)使用全局临时表。
还有另一种聪明的方法吗? (例如,在嵌套的TriggerB中读取"更新" TriggerA的值)
答案 0 :(得分:0)
由于事物的事务性质,它们是更新触发器。更新后的触发器确实会简化整个场景,但很容易让TableA和TableB不同步。到目前为止,我发现的唯一合理的解决方案是在TableA状态不是“完成”时过滤掉TableB的触发器,并在TableA上添加第三个触发器,当状态更改为Completed时,它将复制TableB触发器。它不像我希望的那样优雅,并且重复代码。