所以我遇到了一个问题如下:
- 我有桌子A.
- 我有表B,表A有外键。
- 我在表A上有一个触发器,它确保表A中的每个项目在表B中至少有一行指向它(通过外键)。
- 触发器运行“插入”命令。
现在的问题是,当我插入表A时,触发器引发错误,因为表B还没有带有表A中新行的外键的行。表B中的行将在事务结束时插入,但触发器不会给我机会。
那么问题的解决方案是什么?有没有办法告诉触发器只在执行事务中的最后一个命令后才能运行?
答案 0 :(得分:0)
如果您需要在表A上触发触发器,但不知道表b中是否有任何相应的行,则应使用" INSTEAD OF"触发。这将允许您在将行插入表A之前检查表B.如果表B中存在匹配,则继续插入A,否则,将行添加到b然后添加A,或跳过不匹配的数据,将错误返回给应用程序。
http://msdn.microsoft.com/en-us/library/ms175521(v=SQL.105).aspx