从触发器捕获SELECTed值

时间:2013-11-07 17:31:40

标签: sql tsql triggers sql-server-2008-r2

我将值插入到具有INSTEAD OF触发器的视图中,以插入/更新各种其他表。触发器的最后一行是

SELECT SCOPE_IDENTITY()

这意味着当我在插入后自己选择SCOPE_IDENTITY()时,我可以使用刚插入的标识值,我得到一个NULL值。

如果我理解正确,这是因为没有与刚刚调用的SCOPE_IDENTITY()相关联的身份值。

有没有办法从触发器中获取SELECT值?由于其当前行为的其他依赖性,更改触发器实际上不是一种选择。

我可以使用临时表并将插件作为动态SQL执行,但这似乎是一种可怕的hacky方式:

DECLARE @scopeid INT
CREATE TABLE #temp(id int)
INSERT INTO #temp EXEC ('INSERT INTO myView(somecolumns) VALUES (somevalues)')
SELECT @scopeid = TOP 1 id FROM #temp
DROP TABLE #temp

肯定有比这更简洁的方式吗?

0 个答案:

没有答案