MySQL の InnoDB ストレージ エンジンでは、通常、主キーは自動インクリメントされます。ただし、主キー以外のキーも自動インクリメントすることは可能です。
データベース スキーマには、「book_comments」と「book_comments_votes」という 2 つのテーブルが含まれています。 「book_comments」テーブルには、非主キー列「comment_id」があり、主キーとして「comment_id」への参照を含む「book_comments_votes」テーブルとの整合性を保つために自動インクリメントする必要があります。
主キー以外を自動インクリメントするには、それをインデックスとして宣言する必要があります。以下に例を示します。
<code class="mysql">CREATE TABLE `book_comments` ( `book_id` MEDIUMINT NOT NULL, `timestamp` MEDIUMINT NOT NULL, `user_id` MEDIUMINT NOT NULL, `vote_up` SMALLINT, `vote_down` SMALLINT, `comment` TEXT, `comment_id` MEDIUMINT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`book_id`, `timestamp`, `user_id`), KEY `comment_id` (`comment_id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>
主キー以外の単純なインデックスを作成するのが最も簡単な解決策ですが、いくつかの代替案も存在します。
ただし、推奨される解決策は、非主キーに一意のインデックスを作成し、代替手段の欠点を回避することです。このアプローチにより、パフォーマンスやデータ ストレージの効率を犠牲にすることなく、シンプルさと整合性の両方が実現します。
以上がMySQL InnoDB で非主キーを自動インクリメントできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。