我在MariaDB上的数据库中创建了两个表:卡萨生产和生产。
create table CasaProduzione(nome varchar(80) primary key);
alter table CasaProduzione add column id tinyint;
alter table CasaProduzione drop primary key;
alter table CasaProduzione modify nome varchar(80) not null;
alter table CasaProduzione modify id tinyint primary key auto_increment;
create table Produzione(
id_film smallint not null,
id_casaProduzione tinyint not null,
data date not null,
constraint `fk_produzione`
foreign key (id_film) references Film(id),
foreign key (id_casaProduzione) references CasaProduzione(id)
on update cascade
on delete restrict);
alter table Produzione modify data in smallint(4);
在我首先移动CasaProduzione表中的列id之后
alter table CasaProduzione modify column id tinyint(4) first;
然后我尝试在prevoius列中设置auto_increment
alter table Produzione modify column id tinyint(4) auto_increment;
ERROR 1833 (HY000): Cannot change column 'id': used in a foreign key constraint 'Produzione_ibfk_1' of table 'Film.Produzione'
所以我试着从Produzione中取消外键
alter table Produzione drop foreign key fk_produzione;
但结果是一样的,我做错了什么
根据评论中的建议,我在这里发布此命令的结果:
SHOW CREATE TABLE Film.Produzione \G;
***************************
1. row
***************************
Table: Produzione
Create Table:
CREATE TABLE Produzione (
id_film SMALLINT(6) NOT NULL,
id_casaProduzione TINYINT(4) NOT NULL,
DATA SMALLINT(4) DEFAULT NULL,
KEY fk_produzione (id_film),
KEY id_casaProduzione (id_casaProduzione),
CONSTRAINT Produzione_ibfk_1 FOREIGN KEY (id_casaProduzione) REFERENCES CasaProduzione (id) ON UPDATE CASCADE )
ENGINE=INNODB DEFAULT CHARSET=utf8mb4
1 row in set (0.001 sec)
1条答案
按热度按时间rsaldnfx1#
正如@FanoFN所言,使用命令
系统向我显示了表Produzione上的约束。系统创建了约束
Produzione_ibfk_1
。我使用以下命令删除了此约束我可以应用命令后
多谢了