mariadb 为已创建的主键设置auto_increment

pb3skfrl  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(237)

我在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)
rsaldnfx

rsaldnfx1#

正如@FanoFN所言,使用命令

show CREATE TABLE Film.Produzione \G;

系统向我显示了表Produzione上的约束。系统创建了约束Produzione_ibfk_1。我使用以下命令删除了此约束

alter table Produzione drop foreign key Produzione_ibfk_1;
Query OK, 0 rows affected (0.130 sec)
Records: 0  Duplicates: 0  Warnings: 0

我可以应用命令后

alter table Produzione modify column id tinyint(4) auto_increment;

多谢了

相关问题