欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql有沒(méi)有外鍵的說(shuō)法

關(guān)于MySQL是否支持外鍵,這個(gè)問(wèn)題已經(jīng)引起了不少的爭(zhēng)議。下面我們先看一下官方文檔的說(shuō)法:

MySQL強(qiáng)制外鍵語(yǔ)法:
CREATE TABLE T1 (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE = INNODB;
CREATE TABLE T2(
id INT NOT NULL,
t1_id INT,
PRIMARY KEY (id),
INDEX par_ind (t1_id),
FOREIGN KEY(t1_id) REFERENCES T1(id) ON DELETE CASCADE
) ENGINE = INNODB;

從上面的語(yǔ)法可以看出,MySQL實(shí)際上是支持外鍵的,只是默認(rèn)情況下并不開(kāi)啟外鍵的約束。

因此,如果我們?cè)趧?chuàng)建表的時(shí)候,使用了“ENGINE=InnoDB”引擎,并在創(chuàng)建表時(shí)使用了“FOREIGN KEY”關(guān)鍵字,則MySQL就會(huì)支持外鍵了。但是這個(gè)特性并不是所有版本都支持,因此需要根據(jù)實(shí)際情況判斷。

MySQL版本檢查語(yǔ)句:
SELECT VERSION();

當(dāng)然,MySQL不支持外鍵的說(shuō)法也有一些道理,因?yàn)镸ySQL即使開(kāi)啟了外鍵約束,對(duì)于某些不規(guī)范的操作,也不會(huì)強(qiáng)制執(zhí)行外鍵約束。比如:

如果一張表中已經(jīng)存在數(shù)據(jù),并且該表有外鍵約束,此時(shí)再添加數(shù)據(jù),如果新添加的數(shù)據(jù)違反了外鍵約束,MySQL也不會(huì)強(qiáng)制執(zhí)行外鍵約束。
此外,在刪除主表數(shù)據(jù)時(shí),如果子表中還有關(guān)聯(lián)數(shù)據(jù),MySQL也不會(huì)自動(dòng)刪除子表中的數(shù)據(jù),而只是會(huì)阻止刪除主表的數(shù)據(jù)。

因此,我們使用MySQL的外鍵約束時(shí),也需要在代碼中增加一些邏輯判斷,以確保數(shù)據(jù)的完整性和一致性。