ホームページ > データベース > mysql チュートリアル > 自動インクリメントフィールドを機能させたまま、MySQL の主キーを変更できますか?

自動インクリメントフィールドを機能させたまま、MySQL の主キーを変更できますか?

Barbara Streisand
リリース: 2024-10-29 19:18:02
オリジナル
631 人が閲覧しました

Can I Modify the Primary Key in MySQL While Keeping an Auto-Incrementing Field Functional?

MySQL 主キーの変更: 自動インクリメントとクエリ効率のバランスをとる

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート