gpt4 book ai didi

mysql - 如何修改外键或主键列的数据类型?

转载 作者:行者123 更新时间:2023-11-29 12:54:03 25 4
gpt4 key购买 nike

我有三张 table 。一个是类(class)部分,另一个是先决条件

CREATE TABLE course(
course_number int(11) NOT NULL AUTO_INCREMENT,
course_name varchar(20) NOT NULL,
credit_hours int(11) NOT NULL,
department varchar(5) NOT NULL,
PRIMARY KEY (course_number)
)

CREATE TABLE section (
section_id int(11) NOT NULL,
course_number` int(11) NOT NULL,
semester varchar(6) NOT NULL,
year year(4) NOT NULL,
instructor varchar(20) DEFAULT NULL,
PRIMARY KEY (section_id),
FOREIGN KEY (course_number) REFERENCES course (course_number)
)
create table prerequisite(
course_number int not null auto_increment,
prerequisite int not null,
primary key (course_number),
foreign key (prerequisite) references course(course_number)
);

我想更改两个表中的 course_number 的数据类型,但是当我运行查询时

alter table course change course_number course_number varchar(20);

我看到以下错误:

Cannot change column 'course_number': used in a foreign key constraint 'section_fk' of table 'university.section'

这里有什么问题吗?最好的解决方案是什么?我所说的最佳解决方案是指,不要丢失任何数据或删除任何表并从头开始创建。

最佳答案

删除外键,更改两个表并添加外键。顺便说一句,明确命名您的约束是个好主意。现在您必须在目录中查找约束名称:

select CONSTRAINT_NAME from information_schema.REFERENTIAL_CONSTRAINTS
where TABLE_NAME = 'prerequisite'
and REFERENCED_TABLE_NAME = 'course'

alter table prerequisite drop constraint ...;

alter table course change course_number course_number varchar(20);
alter table prerequisite change course_number course_number varchar(20);

alter table prerequisite add constraint <name>
foreign key (course_number)
references course (course_number)
<actions>;

关于mysql - 如何修改外键或主键列的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com