ホームページ  >  記事  >  データベース  >  MySQL InnoDB で非主キーを自動インクリメントできますか?

MySQL InnoDB で非主キーを自動インクリメントできますか?

DDD
DDDオリジナル
2024-11-01 17:16:301004ブラウズ

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

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

MySQL InnoDB では、非主キーを自動インクリメントすることができます

質問:

非主キー、特に book_comments の comment_id 列を自動インクリメントすることは可能ですか? table?

代替案:

質問者は、自動インクリメント非主キーの使用に対する 2 つの代替案を提案しています。

  • comment_id を主キーと、(book_id、timestamp、user_id) の一意のインデックスによる整合性の強制
  • 既存の主キーを保持し、comment_id を book_comments_votes テーブル内の主キー全体に置き換えます

ただし、これらの代替案には、不必要なインデックスのオーバーヘッドが追加されたり、テーブル サイズが大幅に増加したりするなどの欠点があります。

答え:

はい、非プライマリを自動インクリメントすることは可能です。その列にインデックスを作成してキーを作成します。次の例では、自動インクリメントする testInc 列を持つテーブルを作成します。

<code class="sql">CREATE TABLE `test` (
  `testID` int(11) NOT NULL,
  `string` varchar(45) DEFAULT NULL,
  `testInc` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`testID`),
  KEY `testInc` (`testInc`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>

ただし、専門家は、この方法を使用しないことを強く推奨します。より適切なアプローチは、comment_id を主キーにし、(book_id、timestamp、user_id) の一意のインデックスを通じて整合性を強制することです。このアプローチは、テーブルに適切な主キーを提供し、最小の驚きの原則に準拠します。

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

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