在具有INSTEAD OF INSERT触发器

时间:2018-02-13 22:37:08

标签: sql-server tsql sql-server-2012 triggers

我有一个结合了两个表的视图。当我在视图中插入时,触发器使用NEXT VALUE FOR MySequence获取主键/聚簇索引值。

然后,触发器使用生成的密钥和Inserted表中的值插入到两个表中。一切正常。

当使用该视图的应用程序执行带有output子句的插入时,会出现此问题。像这样:

DECLARE @InsertedIds table (MyViewId int, ValueForTheFirstTable int)

INSERT INTO MyView (ValueForTheFirstTable, ValueForTheSecondTable )
OUTPUT Inserted.MyViewId, Inserted.ValueForTheFirstTable into @InsertedIds
VALUES ('FirstTableValue', 'SecondTableValue')

ValueForTheFirstTable会返回正确的值。但MyViewId(键)为空。 (我真的希望它是其他任何东西,因为它不知道我生成的密钥。)

我的问题是,如何修改我的INSTEAD OF INSERT触发器以使OUTPUT子句包含我生成的序列号值?

我知道价值,我只需要一种方法将其反馈给SQL Server,以便它可以将它提供给任何OUTPUT子句。

0 个答案:

没有答案