ホームページ >データベース >mysql チュートリアル >MySQL で 1 つの主キーを保持したまま複数の主キーを削除するにはどうすればよいですか?

MySQL で 1 つの主キーを保持したまま複数の主キーを削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 04:35:10590ブラウズ

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

MySQL での主キーの削除

質問: 1 つの主キーを保持したまま、MySQL テーブルの列から主キーを削除するにはどうすればよいですかkey?

シナリオ:
ユーザー顧客をライブ 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)

id を主キーとして維持しながら、user_customer_id と Permission_id の主キーを作成します。ただし、コマンド alter table user_customer_permission を使用してこれを行おうとすると、主キーが削除されます。エラーが発生します:

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 はもともと 3 つの列すべてをカバーしていたことに注意してください。 ID が一意であることは保証されません。ただし、ID がたまたま一意である場合は、それを PRIMARY KEY と AUTO_INCREMENT に再度設定できます:

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

以上がMySQL で 1 つの主キーを保持したまま複数の主キーを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。