【发布时间】:2019-01-10 10:41:11
【问题描述】:
ALTER TRIGGER MyTrigger
ON persons
AFTER INSERT
AS
IF EXISTS(SELECT *
FROM Persons t
INNER JOIN inserted i ON i.LastName <> t.LastName
OR i.FirstName <> t.FirstName
OR i.address <> t.address
OR i.City <> t.City
AND i.PersonID = t.PersonID)
BEGIN
UPDATE p
SET p.LastName = i.LastName,
p.FirstName = i.FirstName,
p.address = i.address,
p.City = i.City
FROM persons AS p
INNER JOIN inserted i ON p.PersonID <> i.PersonID
WHERE p.PersonID = i.PersonID
END
当我尝试使用以前的 id 插入新列时,该行正在更新,这很好。但是也插入了一个我不想要的新行
【问题讨论】:
-
您可以删除插入的行。
-
您正在寻找
INSTEAD OF INSERT, UPDATE而不是AFTER INSERT -
之前已经问过同样的问题stackoverflow.com/questions/54124525/…
标签: sql sql-server tsql triggers