国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

解決修改表結(jié)構(gòu),添加外鍵時出現(xiàn)“約束沖突”的錯誤

2024-07-21 02:51:02
字體:
供稿:網(wǎng)友
解決修改表結(jié)構(gòu),添加外鍵時出現(xiàn)“約束沖突”的錯誤

由于表結(jié)構(gòu)更改,使用新建表,現(xiàn)有部分表需要更改外鍵,將引用更改到新建表的相應字段。在更改過程中,部分表出現(xiàn)如下錯誤提示:

ALTER TABLE 語句與 COLUMN FOREIGN KEY 約束 '' 沖突。該沖突發(fā)生于數(shù)據(jù)庫 “***”,表 “***”, column “***”。

反復查看后,包括字段類型、長度等完全一致。不得其解,在網(wǎng)上找了下,發(fā)現(xiàn)有如下文章[1]提示:

根源: XXX表有數(shù)據(jù)

解決:刪掉XXX表的數(shù)據(jù)再執(zhí)行sql語句

恍然大悟,查看引用表數(shù)據(jù)與被引用表數(shù)據(jù)做比較,才發(fā)現(xiàn),原來是相應字段數(shù)據(jù)不一致的問題。即引用表中的相應字段數(shù)據(jù),在被引用表中并不存在,無法建立實際上的外鍵關系,這是引用完整性的要求。早在讀書時就學到的東西,今天居然忘記了。看來,知識只有在用了之后才屬于自己。

此外,在主次表引用設置后,也可能會出現(xiàn)正面的情況。即主表中的外鍵,在次表中已經(jīng)失效,或不存在。

如表A:

aid aname
1 Lucy
2 Lily
3 Kimi

表B引用表A的aid作為外鍵

bcode aid(FK from A) bvalue
001 1 bone
002 2 btwo
003 5 bthree

由于表B中的“aid”字段引用了表A的“aid”,因此,如果此時想修改表B的定義結(jié)構(gòu),即會出現(xiàn)文章最開始出錯的信息,修改失敗。就是因為表B中的第三條數(shù)據(jù),引用的“aid”為“5”的那條記錄,因為表A中不存在這條記錄,修改表之前的驗證無法通過。只有刪除了這條數(shù)據(jù)之后,再次修改表B才會成功。

PS:正常情況下,如何使用了“強制外鍵約束”,則不會出現(xiàn)上面的問題。因為存在外鍵引用,是無法刪除被引用表某些數(shù)據(jù)的。如果將“強制外鍵約束”選項是“否”。則可以刪除相應的數(shù)據(jù)。


參考文獻:

[1] ALTER TABLE 語句與 COLUMN FOREIGN KEY 約束 '' 沖突 ,大尾巴狼專欄


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 淮北市| 罗山县| 凯里市| 留坝县| 安顺市| 沁阳市| 新绛县| 文安县| 青阳县| 北碚区| 鲁甸县| 西藏| 宣化县| 墨竹工卡县| 利津县| 乾安县| 营口市| 广安市| 云浮市| 栾川县| 银川市| 北碚区| 石楼县| 共和县| 杭锦旗| 林口县| 蒲城县| 武威市| 宝山区| 泗洪县| 夹江县| 梅州市| 沐川县| 洪雅县| 黄石市| 太仆寺旗| 固始县| 贞丰县| 隆昌县| 沙洋县| 贞丰县|