在表中创建新记录时,我需要在其他两个表(b 和 c)中的每一个中创建一条记录。诀窍在于这两个新记录需要具有相同的 PK 值,该值必须是 UNIQUEIDENTIFIER,因此是使用 NEWID() 生成的,与原始记录的键无关。所以,我想在 INSERT TRIGGER 中做的事情看起来像这样:
INSERT INTO [b] ([bKey], [Foo])
OUTPUT inserted.[bKey] [cKey], i.[Bar] INTO [c]
SELECT NEWID(), i.[Foo] FROM inserted i
但是,这似乎是非法的(In an OUTPUT clause in an INSTEAD OF INSERT trigger, is it possible to reference both INSERTED tables?)。除了使用 CURSOR 和变量作为 NEWID() 的结果之外,还有什么方法可以做到这一点吗?
最佳答案
OUTPUT clause INSERT
语句的 of 不能引用输出子句的 inserted
伪表以外的任何表 - 请参阅关于 from_table_name
的注释:
Is a column prefix that specifies a table included in the FROM clause of a DELETE, UPDATE, or MERGE statement that is used to specify the rows to update or delete.
关于sql-server - 在 INSERT 触发器的 OUTPUT 子句中,是否可以引用两个 INSERTED 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523259/