事情是這樣的, 遇到了一個 table B
, 他分別 foreign key 到另外兩個 table A
和 C
, 我在 B
to C
的 foreign key 上面設定了 on delete cascade
, 但是我希望 B
因為 C
被刪除也跟著被 cascade delete 的時候, A
也可以一起被刪除.
除了 trigger 之外, 我想不到什麼其他更好的作法, 所以上 stackoverflow 發問一下: http://stackoverflow.com/questions/22341402/mysql-table-multi-foreign-key-cascade, 下面有人提到 DB 的 foreign key 並沒有一對一的限制, 所以希望作到這件事其實有點違背邏輯. 於是乎只好尋求 trigger 一解.
正當我要定義一個 ON DELETE B
的 trigger 去殺掉 A
的時候, 發現由 C
cascade delete 驅動 B
刪除, 並不會觸發該 trigger, 上網一查才發現, MySQL 的手冊上寫著 Triggers currently are not activated by foreign key actions.
目前想到的解決方式, 就是原本的 on delete cascade 部份也改成用 trigger...
-- EOF --