将表“A”中已删除的行插入另一个表“B”的SQL查询是什么?
答案 0 :(得分:3)
如果TableB
符合the target of an OUTPUT
clause表格的要求。
DELETE FROM TableA
OUTPUT deleted.* INTO TableB
WHERE Foo='Bar'
以下限制适用于外部INSERT的目标 声明:
目标不能是远程表,视图或公用表 表达。
目标不能有FOREIGN KEY约束,或者是 由FOREIGN KEY约束引用。
无法定义触发器 目标。
目标无法参与合并复制或 事务复制的可更新订阅。
如果它不符合这些要求,可以解决这个问题
INSERT INTO TableB
EXEC('
DELETE FROM TableA
OUTPUT DELETED.*
WHERE Foo=''Bar''
')
答案 1 :(得分:3)
一种选择是使用触发器。
CREATE TRIGGER CopyOnDelete
ON A
AFTER DELETE
AS
INSERT INTO B
SELECT * FROM deleted
GO