REFERENCES table名 ON DELETE CASCADE ON UPDATE CASCADE
SQLに関して少し詳しくなった。
タイトルにあるように。
外部キーとして参照されているときのカラムの削除や更新の際に、参照先のテーブルのカラム定義にON UPDADE とか ON DELETEとかカラムに定義しておくと、一緒に、参照先のテーブルのキーとかも変更とか削除とかしてくれるのね。
これ便利。
いままで、参照されているものを消さなきゃいけないじゃん。とずっと思っていたけど、そんなことは全くもってないんだね。
CREATE TABLE
つーわけで、以下抜粋。ON DELETEやON UPDATEで次のものを指定できる。
NO ACTION
削除もしくは更新が外部キー制約違反となることを示すエラーを発生します。制約が遅延可能な場合、何らかの参照行が存在する限り、このエラーは制約の検査時点で発生します。これはデフォルトの動作です。
RESTRICT削除もしくは更新が外部キー制約違反となることを示すエラーを発生します。検査が遅延できない点を除き、NO ACTIONと同じです。
CASCADE削除された行を参照している行は全て削除します。また、参照している列の値を、被参照列の新しい値にします。
SET NULL参照する列(複数可)をNULLに設定します。
SET DEFAULT参照する列(複数可)をそのデフォルト値に設定します。
つか、本当は、もっともっとたくさんオプションがあるんだ。ぜんぜん使ってない。。。。ことはないか。
(more…)

