0

テーブル "A" から削除された行を別のテーブル "B" に挿入する SQL クエリは何でしょうか?

4

2 に答える 2

3

のターゲットであるTableBテーブルの要件を満たしている場合。OUTPUT

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

1 つのオプションは、トリガーを使用することです。

CREATE TRIGGER CopyOnDelete
ON A
AFTER DELETE 
AS
    INSERT INTO B
    SELECT * FROM deleted
GO
于 2013-02-05T12:51:40.243 に答える