On Delete和On Update都有Restrict,No Action, Cascade,Set Null屬性⌒苈ィ現(xiàn)在分別對(duì)他們的屬性含義做個(gè)解釋。
ON DELETE
restrict(約束):當(dāng)在父表(即外鍵的來(lái)源表)中刪除對(duì)應(yīng)記錄時(shí)能犯,首先檢查該記錄是否有對(duì)應(yīng)外鍵鲫骗,如果有則不允許刪除。
no action:意思同restrict.即如果存在從數(shù)據(jù)悲雳,不允許刪除主數(shù)據(jù)挎峦。
cascade(級(jí)聯(lián)):當(dāng)在父表(即外鍵的來(lái)源表)中刪除對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵合瓢,如果有則也刪除外鍵在子表(即包含外鍵的表)中的記錄坦胶。
set null:當(dāng)在父表(即外鍵的來(lái)源表)中刪除對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則設(shè)置子表中該外鍵值為null(不過(guò)這就要求該外鍵允許取null)
ON UPDATE
restrict(約束):當(dāng)在父表(即外鍵的來(lái)源表)中更新對(duì)應(yīng)記錄時(shí)顿苇,首先檢查該記錄是否有對(duì)應(yīng)外鍵峭咒,如果有則不允許更新。
no action:意思同restrict.
cascade(級(jí)聯(lián)):當(dāng)在父表(即外鍵的來(lái)源表)中更新對(duì)應(yīng)記錄時(shí)纪岁,首先檢查該記錄是否有對(duì)應(yīng)外鍵凑队,如果有則也更新外鍵在子表(即包含外鍵的表)中的記錄。
set null:當(dāng)在父表(即外鍵的來(lái)源表)中更新對(duì)應(yīng)記錄時(shí)幔翰,首先檢查該記錄是否有對(duì)應(yīng)外鍵漩氨,如果有則設(shè)置子表中該外鍵值為null(不過(guò)這就要求該外鍵允許取null)。
注:NO ACTION和RESTRICT的區(qū)別:只有在及個(gè)別的情況下會(huì)導(dǎo)致區(qū)別遗增,前者是在其他約束的動(dòng)作之后執(zhí)行叫惊,后者具有最高的優(yōu)先權(quán)執(zhí)行。