我将值插入到具有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
肯定有比这更简洁的方式吗?