我有一个sql表(表A),其中有一列叫做 "Number"。 在一个触发器中(我有一个AFTER INSERT,UPDATE触发器),我想把所有具有相同Number的记录移动到不同的表(比如表B)。
因此,如果是插入,我想把所有有该编号的记录移到表B,这样只有新记录存在于原表(表A)中。
如果是更新,我想把被更新的记录复制到表B(用旧的值)。
所以表B是一个历史表,保存所有以前的记录,表A应该每个Number只有一个条目。
如果能把现有的AFTER INSERTUPDATE放进去就更好了,但如果我需要另一个触发器也可以。
谢谢你的帮助。
结果发现并没有我想象的那么复杂......
(@itemId set from cursor)
SELECT @tempNumber = [Number] FROM tableA WHERE Id = @itemId;
if (NOT EXISTS(SELECT * FROM deleted)) --is insert
BEGIN
INSERT INTO tableB SELECT *, GETDATE() AS CreatedDate FROM tableA WHERE Number=@tempNumber AND Id != @itemId
DELETE FROM tableA WHERE Number=@tempNumber AND Id != @itemId
END
我决定不在更新时创建一个条目,但如果需要你,我相信你只需要做一个ELSE和SELECT从删除,然后INSERT。
希望这能帮助别人