Heim > Datenbank > MySQL-Tutorial > Hauptteil

Können Sie Nicht-Primärschlüssel in MySQL InnoDB automatisch erhöhen?

Mary-Kate Olsen
Freigeben: 2024-11-03 04:23:03
Original
292 Leute haben es durchsucht

Can You Auto-Increment Non-Primary Keys in MySQL InnoDB?

MySQL InnoDB: Nicht-Primärschlüssel automatisch inkrementieren

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.

Die Problemstellung

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.

Eine Lösung

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>
Nach dem Login kopieren

Alternativen und Diskussion

Während die Erstellung eines einfachen Index für den Nicht-Primärschlüssel die einfachste Lösung ist, gibt es einige Alternativen:

  • Kommentar_ID zum Primärschlüssel machen: Dies erfordert die Erstellung eines zusätzlichen eindeutigen Index für (book_id, Zeitstempel, Benutzer-ID), um die Integrität aufrechtzuerhalten.
  • Speichern des gesamten Primärschlüssels in book_comments_votes: Dadurch erhöht sich die Tabellengröße erheblich.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage