外部キー制約のオプション
親で削除または更新があった場合に、どういう挙動をさせるか?を指定できる
基本的にはRESTRICTか、CASCADEのいずれかを使うことになるだろうmrsekut.icon
RDBMSにも依ると思うmrsekut.icon
以下のメモはMySQL
挙動の種類
親tableのrecordで、削除または更新を行うと、子の値がNULLになる
nullableなときのみ使える
殆どの場合、使うべきでないと思うmrsekut.icon
親tableのrecordで、削除または更新を行うと、子の値がdefault値になる
削除時と更新時に別々に指定できる
ON UPDATE ..
ON DELETE ..
注文tableを定義している例
code:sql
CREATE TABLE order (
id ..
user_id ..
..
FOREIGN KEY (user_id)
REFERENCES users (user_id)
ON DELETE RESTRICT ON UPDATE RESTRICT,
)
注文者を特定するためにuser_idが必要で、使ってuserstableを参照している
この時に、userstableでそのuserが削除されると、ordertableにも影響があるわけだが
上記コードのようにON DELETE RESTRICT ON UPDATE RESTRICTと指定すれば、
usersでuserが削除されようとする時にerror
usersでuserが更新されようとする時にerror
ここでの更新というのは、users内でuser_id=5をuser_id=6に変更する場合などのこと
になる