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的差別:隻有在及個别的情況下會導緻差別,前者是在其他限制的動作之後執行,後者具有最高的優先權執行。