首頁 >資料庫 >mysql教程 >如何在MySQL中刪除多個主鍵並保留一個主鍵?

如何在MySQL中刪除多個主鍵並保留一個主鍵?

Patricia Arquette
Patricia Arquette原創
2024-12-28 04:35:10590瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn