Mysql添加外鍵約束.


最近學習遇到一條添加外鍵約束的語句,記錄下來.

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;

InnoDB中外鍵約束定義的語法如下:

ALTER TABLE tbl_name
    ADD [CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

 

轉自:https://www.cnblogs.com/ALXPS/p/8016429.html

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。更新從表,主表不變


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM