MySQL InnoDB: 非主キーの自動インクリメント
MySQL InnoDB では、非主キーを自動インクリメントすることができます
質問:
非主キー、特に book_comments の comment_id 列を自動インクリメントすることは可能ですか? table?
代替案:
質問者は、自動インクリメント非主キーの使用に対する 2 つの代替案を提案しています。
ただし、これらの代替案には、不必要なインデックスのオーバーヘッドが追加されたり、テーブル サイズが大幅に増加したりするなどの欠点があります。
答え:
はい、非プライマリを自動インクリメントすることは可能です。その列にインデックスを作成してキーを作成します。次の例では、自動インクリメントする 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 サイトの他の関連記事を参照してください。