将表“A”中删除的行插入另一个表“B”的 SQL 查询是什么?
问问题
1886 次
2 回答
3
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''
')
于 2013-02-05T12:49:31.897 回答
3
一种选择是使用触发器。
CREATE TRIGGER CopyOnDelete
ON A
AFTER DELETE
AS
INSERT INTO B
SELECT * FROM deleted
GO
于 2013-02-05T12:51:40.243 回答