ホームページ  >  記事  >  データベース  >  MySQL InnoDB で非主キーを自動インクリメントするにはどうすればよいですか?

MySQL InnoDB で非主キーを自動インクリメントするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 01:47:29849ブラウズ

How to Auto-Increment Non-Primary Keys in MySQL InnoDB?

MySQL InnoDB: 非主キーの自動インクリメント

MySQL の InnoDB ストレージ エンジンでは、主キーの値を自動インクリメントできます。ただし、非主キーの自動インクリメントは直接サポートされていません。

具体的な質問: テーブル構造

「book_comments」の次のテーブル構造を考えてみましょう:

book_id     medium_int
timestamp   medium_int
user_id     medium_int
vote_up     small_int
vote_down   small_int
comment     text
comment_id  medium_int

非主キーの自動インクリメントは可能ですか?

はい、非主キーの自動インクリメントは可能です。ただし、自動インクリメントされる列にインデックスを作成する必要があります。

推奨される解決策

非主キーを自動インクリメントする可能性があるにもかかわらず、推奨される解決策は解決策は、データの整合性を目的として、「comment_id」を主キーにし、「book_id」、「timestamp」、および「user_id」の組み合わせに一意のインデックスを作成することです。

追加の考慮事項

質問で言及されている代替案には欠点があります:

  • 「comment_id」を主キーにし、一意のインデックスを作成します: この解決策では追加のインデックスが導入されますこれは望ましくない可能性があります。
  • 「comment_id」を「book_comments_votes」の主キーに置き換えます: これにより、「book_comments_votes」のサイズが大幅に増加し、パフォーマンスに影響を与える可能性があります。

したがって、最も効率的で堅牢な解決策は、「comment_id」を主キーとして使用し、「book_id」、「timestamp」、「user_id」に一意のインデックスを作成するという推奨アプローチに従うことです。

以上がMySQL InnoDB で非主キーを自動インクリメントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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