今天在使用Navicat for mysql設計表時,在設定外鍵的時候,刪除時和更新時兩列有四個值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試了一遍,它們的差異如下:
CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;
#SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵欄位所在列設為null,所以注意在設計子表時外鍵不能設為not null;
當子表中存在與父表相關聯的記錄時,RESTRICT(限制)會阻止刪除父表記錄
NO ACTION:同RESTRICT,也是先檢查外鍵;
#空、RESTRICT、NO ACTION | ##刪除:從表格記錄不存在時,主表才可以刪除,刪除從表,主表不變。更新:從表記錄不存在時,主表菜可以更新,更新從表,主表不變。 |
刪除:刪除主表時自動刪除從表。刪除從表,主表不變。 | 更新:更新主表時自動更新從表。更新從表,主表不變。 |
刪除:刪除主表時自動更新從表為NULL,刪除從表,主表不變。 | 更新:更新主表時自動更新從表值為NULL。更新從表,主表不變。 |
(3)給a、b表插入記錄如下: #這裡:a表id2欄位為外鍵字段,參看b表的主鍵,所以b表是父表,a表是子表;然後分別在設定a表外鍵的時候設定不同的四個值,就可以得到我上述的結論。
以上是Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!