- 締切済み
外部キー制約について
外部キー制約をよく理解しておりません。 親表と子表に外部キー制約がある場合は、トランザクション中であっても 不整合は許されないのでしょうか? INSERTする場合は必ず親表から、 DELETEする場合は必ず子表からとなるのですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ossan_hiro
- ベストアンサー率66% (88/132)
回答No.3
参考まで。 外部キー制約でMZ-80Bさんのset constraintを変更する場合、外部キー制約作成時に遅延可能"deferrable"にする必要があります。 また、制約を作成するときに"INITAILLY DEFERRED"を設定すれば、SET CONSTRAINT で変更しなくてもトランザクション単位に設定できます DELETEの場合は制約作成時にon delete句で削除時の処理を記述すれば親テーブルのデータを削除することができます。 詳しくはSQLリファレンスを参照ください。 #ポイント辞退
- MZ-80B
- ベストアンサー率56% (46/81)
回答No.2
デフォルトでは DML単位で制約、トランザクション単位に変更可 set constraintでマニュアル参照 遅延操作例 set constraint all deferred
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.1
回答は、YES&YES。 運用上、制約が邪魔なときは、制約を一時的に”不活性”な状態に変更し対処します。 例えば、データの移行、ロード、保守など、あえて制約を守らない作業の場合は。