1. <small id='z3whf'></small><noframes id='z3whf'>

    <tfoot id='z3whf'></tfoot>
    <i id='z3whf'><tr id='z3whf'><dt id='z3whf'><q id='z3whf'><span id='z3whf'><b id='z3whf'><form id='z3whf'><ins id='z3whf'></ins><ul id='z3whf'></ul><sub id='z3whf'></sub></form><legend id='z3whf'></legend><bdo id='z3whf'><pre id='z3whf'><center id='z3whf'></center></pre></bdo></b><th id='z3whf'></th></span></q></dt></tr></i><div id='z3whf'><tfoot id='z3whf'></tfoot><dl id='z3whf'><fieldset id='z3whf'></fieldset></dl></div>
  2. <legend id='z3whf'><style id='z3whf'><dir id='z3whf'><q id='z3whf'></q></dir></style></legend>

        <bdo id='z3whf'></bdo><ul id='z3whf'></ul>

      删除 MySQL 中的主键

      时间:2023-05-24
      <i id='7jLdp'><tr id='7jLdp'><dt id='7jLdp'><q id='7jLdp'><span id='7jLdp'><b id='7jLdp'><form id='7jLdp'><ins id='7jLdp'></ins><ul id='7jLdp'></ul><sub id='7jLdp'></sub></form><legend id='7jLdp'></legend><bdo id='7jLdp'><pre id='7jLdp'><center id='7jLdp'></center></pre></bdo></b><th id='7jLdp'></th></span></q></dt></tr></i><div id='7jLdp'><tfoot id='7jLdp'></tfoot><dl id='7jLdp'><fieldset id='7jLdp'></fieldset></dl></div>

          <tbody id='7jLdp'></tbody>
          • <bdo id='7jLdp'></bdo><ul id='7jLdp'></ul>

              <small id='7jLdp'></small><noframes id='7jLdp'>

              • <tfoot id='7jLdp'></tfoot>
                <legend id='7jLdp'><style id='7jLdp'><dir id='7jLdp'><q id='7jLdp'></q></dir></style></legend>

                本文介绍了删除 MySQL 中的主键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                限时送ChatGPT账号..

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

                I have the following table schema which maps user_customers to permissions on a live MySQL database:

                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 的主键.

                I would like to remove the primary keys for user_customer_id and permission_id and retain the primary key for 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
                

                如何删除列的主键?

                推荐答案

                如果没有索引,维护自增列会变得太昂贵,这就是为什么 MySQL 要求自增列作为最左边的部分索引.

                Without an index, maintaining an autoincrement column becomes too expensive, that's why MySQL requires an autoincrement column to be a leftmost part of an index.

                您应该在删除键之前删除自动增量属性:

                You should remove the autoincrement property before dropping the key:

                ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
                ALTER TABLE user_customer_permission DROP PRIMARY KEY;
                

                请注意,您有一个复合 PRIMARY KEY,它涵盖了所有三列,并且 id 不能保证是唯一的.

                Note that you have a composite PRIMARY KEY which covers all three columns and id is not guaranteed to be unique.

                如果它恰好是唯一的,您可以再次将其设为 PRIMARY KEYAUTO_INCREMENT:

                If it happens to be unique, you can make it to be a PRIMARY KEY and AUTO_INCREMENT again:

                ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
                

                这篇关于删除 MySQL 中的主键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:什么时候使用 MyISAM 和 InnoDB? 下一篇:MySQL - SELECT WHERE field IN(子查询) - 为什么非常慢?

                相关文章

              • <small id='wwGzg'></small><noframes id='wwGzg'>

                  <tfoot id='wwGzg'></tfoot>
                      <bdo id='wwGzg'></bdo><ul id='wwGzg'></ul>
                  1. <i id='wwGzg'><tr id='wwGzg'><dt id='wwGzg'><q id='wwGzg'><span id='wwGzg'><b id='wwGzg'><form id='wwGzg'><ins id='wwGzg'></ins><ul id='wwGzg'></ul><sub id='wwGzg'></sub></form><legend id='wwGzg'></legend><bdo id='wwGzg'><pre id='wwGzg'><center id='wwGzg'></center></pre></bdo></b><th id='wwGzg'></th></span></q></dt></tr></i><div id='wwGzg'><tfoot id='wwGzg'></tfoot><dl id='wwGzg'><fieldset id='wwGzg'></fieldset></dl></div>
                  2. <legend id='wwGzg'><style id='wwGzg'><dir id='wwGzg'><q id='wwGzg'></q></dir></style></legend>