MySQL建立外來鍵約束時四種屬性解釋

2021-10-05 11:29:22 字數 962 閱讀 1696

alter table selection add constraint fk_reference_1 foreign key(course) references course (id) on delete restrict on update restrict;

alter table selection add constraint fk_reference_2 foreign key(student) references student (id) on delete restrict on update restrict;

cascade

在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄

set null

在父表上update/delete記錄時,將子表上匹配記錄的列設為null (要注意子表的外來鍵列不能為not null)

no action

如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作

restrict

同no action, 都是立即檢查外來鍵約束

set null

父表有變更時,子表將外來鍵列設定成乙個預設的值 但innodb不能識別

null、restrict、no action

刪除:從表記錄不存在時,主表才可以刪除。刪除從表,主表不變

更新:從表記錄不存在時,主表才可以更新。更新從表,主表不變

cascade

刪除:刪除主表時自動刪除從表。刪除從表,主表不變

更新:更新主表時自動更新從表。更新從表,主表不變

set null

刪除:刪除主表時自動更新從表值為null。刪除從表,主表不變

更新:更新主表時自動更新從表值為null。更新從表,主表不變

關於MySQL的四種外來鍵約束

首先描述的on delete的情況。1 restrict 當刪除父表中的某條記錄時,會先檢查該條記錄的主鍵是否在字表中被引用,如果被引用,那麼將無法刪除。相反,刪除字表中的記錄,將不會有影響。2 no action 和restrict 一樣的情況。當刪除父表中的某條記錄時,會先檢查該條記錄的主鍵是否...

mysql建立外來鍵約束

mysql建立關聯表可以理解為是兩個表之間有個外來鍵關係,但這兩個表必須滿足三個條件 1.兩個表必須是innodb資料引擎 2.使用在外鍵關係的域必須為索引型 index 3.使用在外鍵關係的域必須與資料型別相似 例如 1 建立s user表 create table s user u id int...

mysql 無法建立外來鍵約束

對mysql資料庫不太熟悉,今天遇到了外來鍵建立問題。alter外來鍵建立語句命令列下提示成功了,但就是沒看到外來鍵。後來改用workbench工具來建立,發現是因為資料預設是採用的myisam儲存引擎,該引擎不支援外來鍵,需要修改引擎為innodb才可以。我直接在workbench將表的引擎改為了...