MySQL の InnoDB ストレージ エンジンでは、通常、主キーは自動インクリメントされます。ただし、主キー以外のキーも自動でインクリメントすることは可能です。
データベース スキーマには、「book_comments」と「book_comments_votes」という 2 つのテーブルが含まれています。 「book_comments」テーブルには、主キーとして「comment_id」への参照が含まれる「book_comments_votes」テーブルとの一貫性を保つために、非主キー列「comment_id」を自動インクリメントする必要があります。
主キー以外を自動インクリメントするには、それをインデックスとして宣言する必要があります。以下に例を示します:
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;
非主キーに単純なインデックスを作成するのが最も簡単な解決策ですが、いくつかの代替案が存在します。
ただし、推奨される解決策は、非主キーに一意のインデックスを作成し、代替手段の欠点を回避することです。このアプローチは、パフォーマンスやデータ ストレージの効率を犠牲にすることなく、シンプルさと整合性の両方を提供します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3