天天看點

MySQL外鍵限制OnDelete和OnUpdate的使用

On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性。現在分别對他們的屬性含義做個解釋。

ON DELETE

restrict(限制):當在父表(即外鍵的來源表)中删除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許删除。

no action:意思同restrict.即如果存在從資料,不允許删除主資料。

cascade(級聯):當在父表(即外鍵的來源表)中删除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則也删除外鍵在子表(即包含外鍵的表)中的記錄。

set null:當在父表(即外鍵的來源表)中删除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設定子表中該外鍵值為null(不過這就要求該外鍵允許取null)

ON UPDATE

restrict(限制):當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許更新。

no action:意思同restrict.

cascade(級聯):當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則也更新外鍵在子表(即包含外鍵的表)中的記錄。

set null:當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設定子表中該外鍵值為null(不過這就要求該外鍵允許取null)。

注:NO ACTION和RESTRICT的差別:隻有在及個别的情況下會導緻差別,前者是在其他限制的動作之後執行,後者具有最高的優先權執行。

繼續閱讀