【发布时间】:2014-02-09 04:03:26
【问题描述】:
我将几行插入到表 A 中,该表具有 instead of insert 触发器和 identity 列。
然后我需要在表 B 中插入这么多行,其中每一行都包含对插入 A 中的行的引用。
问题是,我不能在 A 上使用 output 子句,因为不会设置身份(由于触发器)。
我知道对于一行我可以使用@@identity,只要在 A 中插入行是触发器内的最后一个插入语句,但这里我说的是多行。
我怎样才能做到这一点?
【问题讨论】:
-
朋友也有类似的问题,I blogged about it here。
-
你是在同一个过程中插入表 A 和表 B 吗?我认为你应该使用一个临时表
-
我建议事先适当地创建这些身份,并使用它们插入到 tableA 和 TableB 中。
-
这是一个很好的问题。它可以是没有临时表的圆顶 i) 在表 A 和表 B 上创建视图 ii) 在视图上创建而不是触发器。 iii)在插入视图后传递所有值 iv)在触发器内部写入查询以使用输出插入到 TableA 中 v)触发器内部的下一个语句插入到 TableB 尝试让我们知道。
标签: sql-server sql-server-2008-r2