这里是我的表格(Entier = Integer//Caractère long variable = Varchar):
我创建了一个 View V_Enterprise(idContact, PhoneNumber, email, name, city, adress)
我尝试在该 View 上创建触发器以允许用户更新 View :
CREATE TRIGGER test
ON V_Entreprise
INSTEAD OF INSERT
AS
DECLARE @T_ContactId INT
BEGIN
INSERT INTO T_Contact
SELECT i.phoneNumber, i.email
FROM Inserted i
SELECT @T_ContactId = @@IDENTITY
INSERT INTO T_Entreprise
SELECT @T_ContactId, i.name, i.city, i.adress
FROM Inserted i
END ;
正如我所料,它适用于简单的插入,但是当我一次添加几行时,它会失败,因为 @T_ContactId 仅包含第一个 id。有人可以帮我解决它吗?我觉得我应该使用 INNER JOIN 插入,但我不知道如何处理它。
最佳答案
好吧,您永远不应该将标量变量设置为触发器中插入或删除的值。
使用 OUTPUT 子句来取回您的 id 值。
关于sql-server - 插入 View ,而不是触发器、身份、多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161345/