0

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

SELECT SCOPE_IDENTITY()

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

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

有没有办法从触发器中获取 SELECT 值?由于对其当前行为的其他依赖性,更改触发器并不是真正的选择。

我可以使用临时表来执行此操作,并将插入作为动态 SQL 执行,但这似乎是一种非常骇人听闻的方法:

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

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

4

0 回答 0