如何在SQL Server中创建仅在事务提交之前触发的触发器

时间:2013-08-07 16:44:20

标签: sql-server triggers transactions foreign-keys rollback

所以我遇到了一个问题如下:
  - 我有桌子A.
  - 我有表B,表A有外键。
  - 我在表A上有一个触发器,它确保表A中的每个项目在表B中至少有一行指向它(通过外键)。
  - 触发器运行“插入”命令。

现在的问题是,当我插入表A时,触发器引发错误,因为表B还没有带有表A中新行的外键的行。表B中的行将在事务结束时插入,但触发器不会给我机会。

那么问题的解决方案是什么?有没有办法告诉触发器只在执行事务中的最后一个命令后才能运行?

1 个答案:

答案 0 :(得分:0)

如果您需要在表A上触发触发器,但不知道表b中是否有任何相应的行,则应使用" INSTEAD OF"触发。这将允许您在将行插入表A之前检查表B.如果表B中存在匹配,则继续插入A,否则,将行添加到b然后添加A,或跳过不匹配的数据,将错误返回给应用程序。

http://msdn.microsoft.com/en-us/library/ms175521(v=SQL.105).aspx