开发者社区> 问答> 正文

在MySQL中删除主键?mysql

我有以下表模式,它将user_customers映射到实时MySQL数据库的权限:

mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id | int(11) | NO | PRI | NULL | | +------------------+---------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) 我想删除user_customer_id和Permission_id的主键,并保留id的主键。

当我运行命令时:

alter table user_customer_permission drop primary key; 我收到以下错误:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key 如何删除列的主键?

展开
收起
保持可爱mmm 2020-05-17 17:00:33 352 0
1 条回答
写回答
取消 提交回答
  • 如果没有索引,则维护自动增量列会变得太昂贵,这就是为什么MySQL要求将自动增量列作为索引的最左侧部分的原因。

    您应该在删除键之前删除autoincrement属性:

    ALTER TABLE user_customer_permission MODIFY id INT NOT NULL; ALTER TABLE user_customer_permission DROP PRIMARY KEY; 请注意,您有一个PRIMARY KEY涵盖所有三列的组合,并且id不能保证是唯一的。

    如果碰巧是唯一的,你可以把它是一个PRIMARY KEY和AUTO_INCREMENT再次:

    ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;来源:stack overflow

    2020-05-17 17:03:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像