更改列的数据类型时发现有外键约束如何处理?

此文转载自:https://blog.csdn.net/qq_42392049/article/details/113251470#commentBox

首先我们先创建表并建立约束

【表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);

在这里插入图片描述
如有错误,欢迎指正。
创作不易,一键三连。
在这里插入图片描述

   

更多内容详见微信公众号:Python测试和开发

Python测试和开发

原文地址:https://www.cnblogs.com/phyger/p/14340601.html