sql-server - 在 INSERT 触发器的 OUTPUT 子句中,是否可以引用两个 INSERTED 表?

标签 sql-server sql-server-2005 triggers insert

在表中创建新记录时,我需要在其他两个表(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/

相关文章:

SQL:WHERE 子句中的 IF 子句

sql-server - 考虑临时插入表中的多行

sql - 取一个带有数量字段或项目计数的表,并动态地为每个字段创建唯一的行

google-maps - 如何避免最终用户手动启动 Google Places Autocomplete 下拉菜单?

c# - 在触发器中检查窗口的 "WindowState"的值

Mysql trigger on Delete to multiple tables (同样报错1235)

c# - 为什么 TSQL 将 "sofia"视为与 "sofia"相同?这是什么字符串编码?

sql-server - 如何定义全文索引重建是否完成?

sql - 我可以在没有 [dbo] 的情况下调用 SQL Server 2005 中的函数吗?

sql-server - 什么存储位置、SQL Server 或文件系统会在保存 tiff 图像时产生更好的性能?