トップ回答者
複数テーブル内の同一条件レコードを一括削除するには?

質問
回答
-
エリック さんからの引用 よろしくお願いします。
複数のテーブルの同一条件レコードを一括で削除したい場合
どのように記述すれば宜しいのでしょうか?
Table_AからTable_Pまでのテーブルには
それぞれフィールドField_1とField_2が必ず有ります。
テーブルTable_AからTable_Pで以下の条件の
WHERE Field_1 = 'A' AND Field_2 = 'B'
レコードは全て削除させたいのです。
どなたか御指導下さいますよう、よろしくお願いいたします。
連鎖参照整合性制約の事かな?
http://msdn.microsoft.com/ja-jp/library/aa933119.aspx
前提条件として、外部キーが設定されている事とCREATE TABLE(もしくはALTER TABLE)でREFERENCES句に"ON DELETE"、"ON UPDATE"が設定されている必要があります。
(詳細については上記のMSDNライブラリ、もしくはSQL ServerのBooks Onlineを参照してください)
イメージとしては、マスターデータを削除したら、それに関連するデータも同時に削除されると考えれば良いかと思います。
今回の例であれば、Table_AからTable_Pまでのテーブル(どれが主になるテーブルなんだろ?)にALTER TABLEで外部キーを設定して、同時にREFERENCES句に"ON DELETE CASCADE"を追加すれば実現できると思います。
-
何回か同じような処理をしなくてはいけないのであれば、ストアドプロシージャ化してみるとかはどうでしょうか?
削除するパラーメータを渡して、関連するテーブルからデータを削除するとか。
後、Table_AからTable_Pというテーブルの名前に連続性(Table_A、Table_B、…、Table_P)なら、ストアドプロシージャ内でクエリーを組み立ててDELETEするのも一つの手でだと思います。
これがマスターデータに対するトランザクションデータでしたら、前回書いたようにREFERENCESにON DELETEを記述する事で、関連するレコードは削除されますけど。(外部キーが設定されている必要がありますが)
すべての返信
-
エリック さんからの引用 よろしくお願いします。
複数のテーブルの同一条件レコードを一括で削除したい場合
どのように記述すれば宜しいのでしょうか?
Table_AからTable_Pまでのテーブルには
それぞれフィールドField_1とField_2が必ず有ります。
テーブルTable_AからTable_Pで以下の条件の
WHERE Field_1 = 'A' AND Field_2 = 'B'
レコードは全て削除させたいのです。
どなたか御指導下さいますよう、よろしくお願いいたします。
連鎖参照整合性制約の事かな?
http://msdn.microsoft.com/ja-jp/library/aa933119.aspx
前提条件として、外部キーが設定されている事とCREATE TABLE(もしくはALTER TABLE)でREFERENCES句に"ON DELETE"、"ON UPDATE"が設定されている必要があります。
(詳細については上記のMSDNライブラリ、もしくはSQL ServerのBooks Onlineを参照してください)
イメージとしては、マスターデータを削除したら、それに関連するデータも同時に削除されると考えれば良いかと思います。
今回の例であれば、Table_AからTable_Pまでのテーブル(どれが主になるテーブルなんだろ?)にALTER TABLEで外部キーを設定して、同時にREFERENCES句に"ON DELETE CASCADE"を追加すれば実現できると思います。
-
何回か同じような処理をしなくてはいけないのであれば、ストアドプロシージャ化してみるとかはどうでしょうか?
削除するパラーメータを渡して、関連するテーブルからデータを削除するとか。
後、Table_AからTable_Pというテーブルの名前に連続性(Table_A、Table_B、…、Table_P)なら、ストアドプロシージャ内でクエリーを組み立ててDELETEするのも一つの手でだと思います。
これがマスターデータに対するトランザクションデータでしたら、前回書いたようにREFERENCESにON DELETEを記述する事で、関連するレコードは削除されますけど。(外部キーが設定されている必要がありますが)
-
こんにちは。フォーラムオペレータ大久保です。
エリック さん、フォーラムのご利用ありがとうございます。
みなさんから、いろいろな方面からのアドバイスをいただきましたが、エリック さんのご要望にお応えできる情報はありましたでしょうか?
汎用性やデータの整合性の保証など、前提がおありのことと思いますので、それにあわせて方法を選択していただければと。
アドバイスくださった皆様の投稿に「回答済み」チェックをつけさせていただきましたが、これらのアイディアの採用が難しい場合、その理由や環境の詳細など教えてください。
また別の角度からのアドバイスがいただけると思います
それではー