In der InnoDB-Speicher-Engine von MySQL wird der Primärschlüssel normalerweise automatisch inkrementiert. Es ist jedoch auch möglich, einen Nicht-Primärschlüssel automatisch zu inkrementieren.
Ein Datenbankschema enthält zwei Tabellen: „book_comments“ und „book_comments_votes“. Die Tabelle „book_comments“ verfügt über eine Nicht-Primärschlüsselspalte „comment_id“, die aus Gründen der Konsistenz mit der Tabelle „book_comments_votes“, die einen Verweis auf „comment_id“ als Primärschlüssel enthält, automatisch inkrementiert werden muss.
Um einen Nicht-Primärschlüssel automatisch zu inkrementieren, muss er als Index deklariert werden. Hier ist ein Beispiel:
<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>
Während die Erstellung eines einfachen Index für den Nicht-Primärschlüssel die einfachste Lösung ist, gibt es einige Alternativen:
Die empfohlene Lösung bleibt jedoch bestehen um einen eindeutigen Index für den Nicht-Primärschlüssel zu erstellen und die Nachteile der Alternativen zu vermeiden. Dieser Ansatz bietet sowohl Einfachheit als auch Integrität, ohne Einbußen bei der Leistung oder Datenspeichereffizienz.
Das obige ist der detaillierte Inhalt vonKönnen Sie Nicht-Primärschlüssel in MySQL InnoDB automatisch erhöhen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!