テーブル "A" から削除された行を別のテーブル "B" に挿入する SQL クエリは何でしょうか?
1886 次
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 に答える