此触发器:
ALTER TRIGGER InsteadTrigger on CustomerView
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Person
SELECT FirstName, LastName
FROM inserted
使此查询返回null。
INSERT INTO CustomerView (FirstName, LastName) Values ('Jonathan', 'Allen')
SELECT SCOPE_IDENTITY()
有没有办法修复触发器,以便SCOPE_IDENTITY返回正确的值? (我不能使用@@ IDENTITY,因为涉及的桌子上可能还有其他触发器。)
答案 0 :(得分:3)
不,我不认为这是可能的。
当然,您可以从触发器本身返回它。
ALTER TRIGGER InsteadTrigger on CustomerView
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Person
SELECT FirstName, LastName
FROM inserted
SELECT SCOPE_IDENTITY() AS PersonId
END
您可以使用CONTEXT_INFO
来抑制结果集,除非您需要它。
使用OUTPUT
子句在此上下文中不起作用,如this Microsoft Connect Item中所述,它在插入主表之前进行评估,因此在调用IDENTITY
函数之前进行评估。 / p>