ubuntu下mysql的Cascade,NO ACTION,Restrict,SET NULL

On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性。如今分別對他們的屬性含義作個解釋。rest

ON DELETEio

restrict(約束):當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則不容許刪除。date

no action:意思同restrict.即若是存在從數據,不容許刪除主數據。數據

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

set null:當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則設置子表中該外鍵值爲null(不過這就要求該外鍵容許取null)let

ON UPDATE

restrict(約束):當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則不容許更新。

no action:意思同restrict.

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

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

注:NO ACTION和RESTRICT的區別:只有在及個別的狀況下會致使區別,前者是在其餘約束的動做以後執行,後者具備最高的優先權執行。

相關文章
相關標籤/搜索