MySQL數(shù)據(jù)庫外鍵

2019-01-04 11:43 更新

設(shè)置外鍵

  1. 外鍵及功能:成績(jī)表(參照表也叫子表)中的學(xué)號(hào)來自學(xué)生表(被參照表也叫父表),成績(jī)表中的課程號(hào)來自課程表;當(dāng)要?jiǎng)h除或更新被參照表中的給字段的值時(shí),參照表該字段的值如何改變。在on delete on update設(shè)置參照動(dòng)作:restrict(限制) cascade(級(jí)聯(lián))Set null(設(shè)置為空) no action(無動(dòng)作)

簡(jiǎn)單點(diǎn)說就是外鍵所在的表是子表,外鍵所參照的表是父表。

A. restrict:當(dāng)子表有相關(guān)記錄時(shí),禁止父表刪除或更新此字段的值(默認(rèn));

B. cascade(級(jí)聯(lián)):當(dāng)父表記錄刪除或更新該字段的值時(shí),子表跟著被刪除或更新;

C. set null:如果子表該字段沒設(shè)置為not null,當(dāng)父表刪除或更新時(shí),子表相關(guān)記錄的該字段的值設(shè)置為空;D. no action:與restrict一樣。

  1. 使用命令創(chuàng)建外鍵Alter table cj add constraint cs_xh foreign key (學(xué)號(hào)) references xs(學(xué)號(hào)) on delete restrict on update cascade, add constraint cj_kch foreign key (課程號(hào)) references kc(課程號(hào)) on delete cascade on update cascada;
  2. 創(chuàng)建時(shí)設(shè)置外鍵Create table cj(學(xué)號(hào) char(6) not null,課程號(hào) char(3) not null,成績(jī) decimal(4,1),primary key(學(xué)號(hào),課程號(hào)),Constraint cj_xh foreign key(學(xué)號(hào)) references xs(學(xué)號(hào)) on delete restrict on update cascade,constraint cj_kch foreign key (課程號(hào)) references kc(課程號(hào)) 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%”;

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)