ホームページ >データベース >mysql チュートリアル >MySQL で 1 つの主キーを保持したまま複数の主キーを削除するにはどうすればよいですか?
質問: 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 から主キーを削除するには、次の手順に従います。
からの自動インクリメントプロパティid:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
主キーを削除します:
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 サイトの他の関連記事を参照してください。