我在表 A 上创建了插入触发器,只要表 A 上发生插入,它就会在表 B 中插入记录。这工作正常,但如果我在表 A 上使用更新触发器,它会在表 B 中插入更新的记录,但不会删除旧的记录表B中的记录。如何达到预期的结果?
ALTER TRIGGER trigger1 on tableA
FOR UPDATE
AS
BEGIN
IF NOT EXISTS (SELECT C.column1 FROM tableB C INNER JOIN INSERTED I ON C.column1 = I.column1 WHERE C.column1 = I.column1 AND C.column2 = I.column2 )
INSERT INTO tableB ( column1 , column2 )
SELECT column1 , column2
FROM INSERTED I
WHERE RecordTypeId IS NOT NULL
GROUP BY column1 , column2
ORDER BY column1 , column2
END
最佳答案
请检查以下SQL Server Update trigger它使用内部已删除表
从目标表中删除create TRIGGER trigger1 on tableA
FOR UPDATE
AS
BEGIN
DELETE tableB
FROM tableB b
INNER JOIN deleted d
on b.column1 = d.column1
and b.column2 = d.column2
INSERT INTO tableB ( column1 , column2 )
SELECT column1 , column2
FROM INSERTED
请在使用生产力之前进行测试。
关于sql - 更新触发器如何删除旧记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37747153/