UPDATE CASCADEの罠
親テーブルの 2項目をUNIQUE KEYにして、参照テーブルはこのセットが更新されたら自身の2項目も更新するようUPDATE CASCADEにしたんだけど、親が2項目のどちらかをヌルにしたら、その後更新しても伝搬されないのね!!!ビビった。
僕の言語能力の限界で、なに言ってるのか分からないかもしれないから図解すると…
Parent | pid | like | |
---|---|---|---|
1 | cat | ||
Child | ... | pidRef | likeRef |
... | 1 | cat |
って状態から、likeにヌルをセットすると、
Parent | pid | like | |
---|---|---|---|
1 | NULL | ||
Child | ... | pidRef | likeRef |
... | 1 | NULL |
…とちゃんと反映されるんだけど、一度ヌルになると、親の項目を再セットしても、
Parent | pid | like | |
---|---|---|---|
1 | dog | ||
Child | ... | pidRef | likeRef |
... | 1 | NULL |
…と、子テーブルの方はヌルのまま!!ってことです。
ヌルにセットされるケースがある場合はダメってことなのかー。いい方法ないかな。
素直にJOINかな…。