QA SQLサーバーデータベース用の小さなdb-cleanerアプリケーションを構築しています。当然ながら、私はそれらに依存するテーブルの行を削除する必要があります。明示的にすべての依存関係を明示的に参照せずにカスケードを削除
T-SQLのカスケード機能は非常に限られているので、NHibernateを使用して問題を簡素化しようとしました。しかし、私がこれで見つけた唯一の方法は、各依存関係のコレクションをオブジェクト削除の に作成し、それをcascade = deleteとマークすることでした。
これは、私が他の目的で必要としないたくさんのコレクション(hbmファイルとC#オブジェクトの両方)を作成することを意味します。これは、SQLを使用するだけでこの方法を複雑にします。
何か不足していますか?削除カスケードを実行するための、より簡単で汎用的な方法はありますか?
ありがとうございました。
EDIT:明らかに、DB内の外部キーの変更は、生産DBと同じに設計されたQA DBであるため、変更しないでください。
は、この男は、再帰的なあなたのためのすべての作業を行いSP書いた:
http://www.sqlteam.com/article/performing-a-cascade-delete-in-sql-server-7
必要少しタッチアップを(
依存関係が定義されています*お使いの外部キー*で。それは非常に単純です:列挙は必要ありません、データベース内の適切なDRI。何がもっと必要ですか? – gbn
私はあなたが何を意味しているか分かりません。 FKはDB内にDELETE CASCADEとマークされていないため、本番DBと同一である必要があり、本番DBは明らかな理由でカスケードをサポートしていません。 – Tomata
したがって、非生産時のFKを変更してください。 – gbn