削除された行をSQLサーバーの一時テーブルに保存するためにdeleteキーワードを使用する方法はありますか?
2 に答える
私の主な質問は、何をしようとしているのかということだと思います。
1 - 削除する前にデータのコピーを保存しますか?
SELECT/INTO の後に DELETE または DELETE OUTPUT パターンが続きます。
しかし、なぜデータを保持するのですか??
2 - テーブルの監査 (挿入、更新、削除) を検討している場合は、コード付きの望ましくないトランザクションを防止する方法のスライド デッキ - http://craftydba.com/?page_id=880を参照してください。
データは XML として保存されるため、監査テーブルは複数のテーブルからの情報を保持できます。したがって、必要に応じて削除を取り消すことができます。誰が、何が変更を行ったかを追跡します。
3 - 1 回限りの削除の場合は、SELECT INTO の後に DELETE を使用します。DELETE を TRANSACTION にラップします。保存されたテーブルでコピーされたデータを確認します。そうすれば、予期しない削除をロールバックできます。
4 - 最後になりましたが、監査テーブルまたはコピー テーブルから日付を削除しない場合は、行を削除済みとしてマークし、それを永久に保持してみませんか?
People Soft のような多くのシステムは、有効な日付を使用して、レコードがアクティブでなくなったかどうかを示します。BI の世界では、これはタイプ 2 ディメンション テーブル (緩やかに変化するディメンション) と呼ばれます。
データ ウェアハウス研究所の記事を参照してください。 http://www.bidw.org/datawarehousing/scd-type-2/
各レコードには開始日と終了日があります。すべての有効なレコードの終了日は null です。
繰り返しますが、上記のすべてのソリューションが機能します。
主な質問は、ビジネス要件は何ですか?
心から
ジョン
狡猾なDBA