【发布时间】:2016-06-10 11:30:41
【问题描述】:
我在表 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
【问题讨论】:
-
为什么要删除早期版本?存档表通常会保留记录的所有版本。
-
它不像归档表,而是另一个表,其中包含与表 A 的某些列不同的记录
-
好吧,你会让触发器删除旧行吗?这里有什么问题?
-
编辑您的问题并显示当前版本的触发器。只需要先检查该行是否存在,然后再删除即可。
-
阅读很少关于在触发器中插入和删除的内容。如何识别插入和删除,然后相应地构建您的脚本。
标签: sql sql-server sql-server-2008 triggers