MySQL での複合キーの自動インクリメント: 総合ガイド
リレーショナル データベースを使用する場合、テーブルで必要なシナリオがよく発生します。複数の列で構成される複合キー。 MySQL では、複合キーの実装により、レコードを一意に識別するために自動インクリメント値の使用が必要になる場合があります。
2 つの外部キー ('app_id' と 'app_id' を参照する 'issue_log' テーブルがあるシナリオを考えてみましょう。 'test_id')。これらの外部キーの一意の組み合わせごとに、さらに識別できるように自動インクリメント列 ('sr_no') が必要です。この設定では、3 つの列 ('app_id'、'test_id'、および 'sr_no') に複合キーが必要です。
この複合キーを実装するには、最初に次のような SQL ステートメントを使用しようとします。
`CREATE TABLE issue_log (
sr_no INT NOT NULL AUTO_INCREMENT、
app_id INT NOT NULL、
test_id INT NOT NULL、
issue_name VARCHAR(255) NOT NULL、
PRIMARY KEY (app_id, test_id, sr_no)
);`
ただし、このクエリを実行すると、「テーブル定義が正しくありません。自動列は 1 つしか存在できません。キーとして定義されています。」このエラーは、MySQL ではテーブルごとに 1 つの自動インクリメント カラムしか許可されていないことが原因で発生します。
この問題は、InnoDB ストレージ エンジンの制限により発生します。 InnoDB テーブルでは、すべての主キーにインデックスを付ける必要があります。つまり、複合主キーに自動インクリメント列を含めると、パフォーマンスの低下につながる可能性があります。
この問題を克服して望ましい結果を達成するには、次のいずれかを行うことができます。
トリガーまたはプロシージャはパフォーマンスにわずかな影響を与える可能性があることに注意することが重要です。そのため、要件を考慮してください。適切なソリューションを選択する前に、データの量を確認してください。
以上がMySQL で自動インクリメント複合キーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。