sql server—如何在触发器内将sql记录从一个表移动到另一个表

ugmeyewa  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(400)

我有一个sql表(表a),其中有一列名为“number”。在触发器内部(我有一个after insert,update触发器),我想将所有具有相同编号的记录移动到不同的表中(比如表b)
因此,如果是insert,我希望将所有具有该编号的记录移动到表b,以便在原始表(表a)中只存在新记录。
如果它是一个更新,我想复制一个被更新到表b的记录(使用旧值)。
所以表b是一个历史表,它保存所有以前的记录,表a每个数字应该只有一个条目。
最好在插入/更新后放入现有的触发器,但如果我需要另一个触发器就可以了。
谢谢你的帮助。

lg40wkob

lg40wkob1#

结果没有我想的那么复杂。。。

(@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

我决定不在更新时创建条目,但如果需要,我相信您只需执行“其他”操作,然后从“已删除”中选择“插入”。
希望这能帮上忙!

相关问题