• 締切済み

外部キー制約について

外部キー制約をよく理解しておりません。 親表と子表に外部キー制約がある場合は、トランザクション中であっても 不整合は許されないのでしょうか? INSERTする場合は必ず親表から、 DELETEする場合は必ず子表からとなるのですか?

みんなの回答

回答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

回答No.1

回答は、YES&YES。 運用上、制約が邪魔なときは、制約を一時的に”不活性”な状態に変更し対処します。 例えば、データの移行、ロード、保守など、あえて制約を守らない作業の場合は。

関連するQ&A