MySQL でテーブルを定義する場合、自動インクリメント フィールドとクエリ効率を組み合わせようとすると、共通の課題が発生します。別のキーを主キーとして使用します。この記事では、最適なパフォーマンスと識別子のアクセス性を維持しながらこれを実現する方法について説明します。
提供されたテーブルの例には、自動インクリメントされる ID フィールドと、クエリでメンバーを識別するために使用される一意の memberid フィールドが含まれています。 ID フィールドの自動インクリメント機能を保持しながら、主キーとして memberid を確立する方法について疑問が生じます。
エラー「1075 - テーブル定義が正しくありません。自動列は 1 つだけ存在でき、定義する必要があります」 「キーとして」は、MySQL が自動インクリメント カラムをキーとして定義する必要があることを示します。これを解決するには、インデックス (キー) を id フィールドに追加する必要があります。
次の変更されたテーブル定義は、この問題に対処します:
CREATE TABLE members ( id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, memberid VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , firstname VARCHAR( 50 ) NULL , lastname VARCHAR( 50 ) NULL , PRIMARY KEY (memberid), KEY (id) --- or: UNIQUE KEY (id) ) ENGINE = MYISAM;
id フィールドにインデックスを作成することで、 MySQL は、id フィールドまたは memberid フィールドを使用してレコードを効率的に見つけることができます。このソリューションにより、自動インクリメント ID フィールドの利点を維持しながら、memberid を使用したクエリのパフォーマンスが損なわれないことが保証されます。
したがって、自動キーではない主キーを使用してデータベース テーブルを構成することが可能です。自動インクリメント列の機能と効率を維持しながら、-incrementing フィールドを使用できます。テーブル設計におけるこの柔軟性により、クエリでの最適なパフォーマンスとユーザーフレンドリーな識別子の使用が可能になります。
以上が自動インクリメントフィールドを機能させたまま、MySQL の主キーを変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。