首页 > 数据库 > mysql教程 > 如何在MySQL中删除多个主键并保留一个主键?

如何在MySQL中删除多个主键并保留一个主键?

Patricia Arquette
发布: 2024-12-28 04:35:10
原创
599 人浏览过

How to Remove Multiple Primary Keys in MySQL While Keeping One?

删除 MySQL 中的主键

问题:如何从 MySQL 表中的列中删除主键,同时保留一个主键?

场景:
考虑下表将用户客户映射到实时 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 dropprimary key; 来执行此操作;导致错误:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
登录后复制

答案:

自动增量列需要索引。如果没有索引,维护自动增量列就会变得过于昂贵。因此,MySQL 要求自动增量列位于索引的最左边。

要从 user_customer_id 和 Permission_id 中删除主键,请按照以下步骤操作:

  1. 删除自动增量属性来自id:

    ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
    登录后复制
  2. 删除主键:

    ALTER TABLE user_customer_permission DROP PRIMARY KEY;
    登录后复制

请注意,复合 PRIMARY KEY 最初覆盖了所有三列,并且不保证 id 是唯一的。但是,如果 id 恰好是唯一的,您可以将其设为 PRIMARY KEY 并再次自动递增:

ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
登录后复制

以上是如何在MySQL中删除多个主键并保留一个主键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板