首先我們先創建表並建立約束
【表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);
如有錯誤,歡迎指正。
創作不易,一鍵三連。