アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

INSERTする場合は必ず親表から、
DELETEする場合は必ず子表からとなるのですか?

A 回答 (3件)

参考まで。


外部キー制約でMZ-80Bさんのset constraintを変更する場合、外部キー制約作成時に遅延可能"deferrable"にする必要があります。
また、制約を作成するときに"INITAILLY DEFERRED"を設定すれば、SET CONSTRAINT で変更しなくてもトランザクション単位に設定できます

DELETEの場合は制約作成時にon delete句で削除時の処理を記述すれば親テーブルのデータを削除することができます。

詳しくはSQLリファレンスを参照ください。

#ポイント辞退
    • good
    • 0

デフォルトでは DML単位で制約、トランザクション単位に変更可


set constraintでマニュアル参照
遅延操作例
set constraint all deferred
    • good
    • 0

回答は、YES&YES。



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す