設(shè)置外鍵
- 外鍵及功能:成績表(參照表也叫子表)中的學(xué)號來自學(xué)生表(被參照表也叫父表),成績表中的課程號來自課程表;當(dāng)要刪除或更新被參照表中的給字段的值時,參照表該字段的值如何改變。在on delete on update設(shè)置參照動作:restrict(限制) cascade(級聯(lián))Set null(設(shè)置為空) no action(無動作)
簡單點說就是外鍵所在的表是子表,外鍵所參照的表是父表。
A. restrict:當(dāng)子表有相關(guān)記錄時,禁止父表刪除或更新此字段的值(默認);
B. cascade(級聯(lián)):當(dāng)父表記錄刪除或更新該字段的值時,子表跟著被刪除或更新;
C. set null:如果子表該字段沒設(shè)置為not null,當(dāng)父表刪除或更新時,子表相關(guān)記錄的該字段的值設(shè)置為空;D. no action:與restrict一樣。
- 使用命令創(chuàng)建外鍵Alter table cj add constraint cs_xh foreign key (學(xué)號) references xs(學(xué)號) on delete restrict on update cascade, add constraint cj_kch foreign key (課程號) references kc(課程號) on delete cascade on update cascada;
- 創(chuàng)建時設(shè)置外鍵Create table cj(學(xué)號 char(6) not null,課程號 char(3) not null,成績 decimal(4,1),primary key(學(xué)號,課程號),Constraint cj_xh foreign key(學(xué)號) references xs(學(xué)號) on delete restrict on update cascade,constraint cj_kch foreign key (課程號) references kc(課程號) on delete cascade on update restrict);停止外鍵約束:set foreign_key_checks=0/off啟用外鍵約束:set foreign_key_checks=1/on刪除外鍵: alter table 表名drop foreign key 外鍵名;例:alter table cj drop foreign key cj_xh;查看外鍵是否打開:Show variables like “%foreign%”;
更多建議: