繁体   English   中英

mysql,alter column删除主键和自动增量

[英]mysql, alter column remove primary key and auto incremement

我正在将我的 mysql 数据库表从 id(自动)更改为 uid。

ALTER TABLE companies DROP PRIMARY KEY;
ALTER TABLE companies ADD PRIMARY KEY (`uuid`);

这是我得到的错误..

[SQL] ALTER TABLE companies DROP PRIMARY KEY;
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

据我所知,我需要将 id 更改为非自动增量,因为我将其作为主键删除。? 更改列以删除主键并自动递增的语法是什么?

ALTER TABLE companies change id id ?????????? int(11)

如果您需要在单个 SQL 语句中从id列中删除自动增量和主键,应该这样做:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11);

事实上,您应该能够在单个ALTER TABLE查询中完成所有操作:

ALTER TABLE companies
DROP PRIMARY KEY,
CHANGE id id int(11),
ADD PRIMARY KEY (uuid);

当您不更改列的名称时,您可以使用MODIFY

ALTER TABLE `companies` MODIFY `id` int(11), 
                           DROP PRIMARY KEY, 
                   ADD PRIMARY KEY (`uuid`);

通过在一个 alter 语句中执行所有操作,它也被视为原子,因此查询之间不会出现不一致(与在行中运行多个语句不同)。

删除自动增量的查询是:

alter table companies DROP PRIMARY KEY,
change id id int(11) NOT NULL

现在您可以看到表的结构没有自动增量。

如果要在另一列中添加主键,请使用此查询

alter table companies add PRIMARY KEY(uuid)

如果要删除自动增量,主键并将主键添加到同一查询中的新列,请使用此查询

alter table comapnies DROP PRIMARY KEY,
   change id id int(11) NOT NULL,
   add PRIMARY KEY(uuid)

这是更改列以删除主键和 auto_increment 的语法

ALTER TABLE table_name DROP PRIMARY KEY,
CHANGE old_key_name new_key_name new_column_datatype

在您的情况下,这是答案:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE ID UID;

如果我们想删除一个主键,我们还需要从该主键中删除 auto_increment,同时使用以下语法:

ALTER TABLE table_name DROP PRIMARY KEY,
MODIFY primary_column_name datatype

不需要使用 change 命令,因为 change 用于更改列的名称和数据类型,因此我们可以使用 modify 来仅更改列的数据类型,而不是 change,就像前面的情况一样。

如果你有一个外键列,你需要先删除约束。 这就是我删除自动增量的方法:

ALTER TABLE portal_user_privileges DROP FOREIGN KEY FK__privileges; 

alter table privileges DROP PRIMARY KEY;

alter table privileges add PRIMARY KEY(id);

ALTER TABLE portal_user_privileges ADD CONSTRAINT FK__privileges FOREIGN KEY (privileges_id) REFERENCES privileges(id)  ON UPDATE NO ACTION ON DELETE NO ACTION;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM