更改列的數據類型時發現有外鍵約束如何處理?

首先我們先創建表並建立約束

【表COURSE】

CREATE TABLE Course(
					Cno CHAR(4)PRIMARY KEY,
					Cname CHAR(40) NOT NULL,
					Cpno CHAR(4),
					Ccredit SMALLINT,
					FOREIGN KEY (Cpno) REFERENCES COURSE(Cno)
					);

這裏面表COURSE引用了表Course(即自身)中的Cno屬性
我們嘗試修改表Course的屬性Cno的數據類型;

ALTER TABLE course MODIFY Cno char(6);

運行會顯示報錯。
在這裏插入圖片描述
因爲該列有外鍵約束,所以不能更改。
那如果我們仍要更改的話,可以先刪除該外鍵約束,待修改完後再添加約束。


alter table Course drop foreign key course_ibfk_1;

這裏的course_ibfk_1就是報錯信息給出的外鍵約束名。
然後我們再次運行類型更改語句。

在這裏插入圖片描述

顯示成功,然後我們可以根據需要再添加外鍵約束。
此時外鍵的數據類型還是創建時的類型,可根據需要在添加外鍵前進行修改

ALTER TABLE SC ADD FOREIGN KEY (Cno) REFERENCES Course(Cno);

在這裏插入圖片描述
如有錯誤,歡迎指正。
創作不易,一鍵三連。
在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章