1

これにより、テーブルからドキュメントがDocument削除され、削除されたドキュメントに関する情報がテーブルに出力されFinishedDocumentます。

DELETE
FROM Document
OUTPUT Deleted.DocumentId
    , Deleted.DocumentDescription
INTO FinishedDocument
WHERE DocumentId = @DocumentId

Documentテーブルだけでなく、テーブルからもドキュメントを削除する必要がありDocumentBackupます。その間、 への挿入を維持する必要がありFinishedDocumentます。

このすべてがたった 1 つのステートメントで可能ですか? そうでない場合は、すべてがトランザクションにラップされた状態でDELETE( に対して) 2 番目ですか?DocumentBackup

4

2 に答える 2

1

2 つの DELETE が必要ですが、最初の DELETE で 2 つの OUTPUT を使用して、FinishedDocument への挿入とテーブル変数への挿入の両方を行い、削除されたすべてのドキュメントを保存する必要があります。

試す:

DECLARE @DeletedDocuments table (DocumentId int)

BEGIN TRANSACTION

DELETE
    FROM Document
    OUTPUT Deleted.DocumentId, Deleted.DocumentDescription
        INTO FinishedDocument
    OUTPUT Deleted.DocumentId
        INTO @DeletedDocuments
WHERE DocumentId = @DocumentId

DELETE
    FROM DocumentBackup
    WHERE EXISTS (SELECT 1 FROM @DeletedDocuments d WHERE DocumentBackup.DocumentId=d.DocumentId)


COMMIT
于 2010-05-20T15:38:43.237 に答える
0

KMが述べたように、それは2つの削除です。

または、FKがあると仮定して、カスケードされた外部キー。またはトリガー。

于 2010-05-20T15:47:22.650 に答える