【发布时间】:2013-08-07 16:44:19
【问题描述】:
所以我遇到了如下问题:
- 我有A表。
- 我有表 B,它有表 A 的外键。
- 我在表 A 上有一个触发器,可确保表 A 中的每个项目在表 B 中至少有一行指向它(通过外键)。
- 触发器运行“插入”命令。
现在的问题是,当我插入表 A 时,触发器会引发错误,因为表 B 还没有包含指向表 A 中新行的外键的行。表 B 上的行将在事务结束时插入,但触发器没有给我机会。
那么什么是解决问题的好方法呢?有没有办法告诉触发器仅在事务中的最后一个命令执行后才运行?
【问题讨论】:
-
为什么要使用触发器来强制执行外键关系?这已经为您 BY 完成了外键。您想要的是 A 上的触发器以执行所需的插入 B
-
将触发器从表 A 移动到表 B
-
Marc B - 触发器不是强制外键。触发器是强制表 B 至少有一个行引用表 A。
-
LastCoder - 我在表 B 上已经有一个版本,但我在表 A 中需要另一个版本,因为有人可能会插入表 A 而不会在表 B 上插入相应的行。
-
“有没有办法告诉触发器仅在事务中的最后一个命令执行后才运行?” -> 没有。我想知道这个讨论将如何发展.
标签: sql-server triggers transactions foreign-keys rollback