MSSQL触发器不会在同一事务中看到不同表中更新行的更改

时间:2016-07-22 08:47:26

标签: sql-server triggers transactions

假设我们在MSSQL数据库中有三个表,A,B和C.

更新后我在A上有一个触发器。此触发器从B获取一些值并将它们插入C。

交易按以下顺序执行操作:

  1. 开始交易。
  2. 将记录插入表B。
  3. 更新先前在表B中插入的(在步骤2中)记录。
  4. 更新表格A(触发触发器)。
  5. 触发器在表C中插入一些在步骤2行中插入的值。
  6. 交易结束。
  7. 问题是,基于表B中的行插入表C的值只是插入B记录后的值,并且不包含更新操作期间所做的更改。

    为什么?

    触发码:

    CREATE TRIGGER MYTRIGGER ON [dbo].[A] AFTER INSERT, UPDATE AS
    BEGIN
    INSERT INTO C (SOME_TEXT_VALUE) SELECT SOME_TEXT_VALUE FROM B;
    END
    GO
    

0 个答案:

没有答案