Heim  >  Artikel  >  Datenbank  >  Kann ich einen Nicht-Primärschlüssel in MySQL InnoDB automatisch erhöhen?

Kann ich einen Nicht-Primärschlüssel in MySQL InnoDB automatisch erhöhen?

DDD
DDDOriginal
2024-11-01 17:16:301004Durchsuche

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

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

In MySQL InnoDB ist es möglich, einen Nicht-Primärschlüssel automatisch zu inkrementieren Dies wird jedoch im Allgemeinen nicht empfohlen.

Frage:

Ist es möglich, einen nicht-primären Schlüssel, insbesondere die Spalte „comment_id“ in den book_comments, automatisch zu erhöhen? Tabelle?

Alternativen:

Der Fragesteller schlägt zwei Alternativen zur Verwendung eines automatisch inkrementierenden Nicht-Primärschlüssels vor:

  • Erstellen von comment_id the Primärschlüssel und Durchsetzung der Integrität mit einem eindeutigen Index für (book_id, timestamp, user_id)
  • Behalten des vorhandenen Primärschlüssels und Ersetzen von comment_id durch den gesamten Primärschlüssel in der Tabelle book_comments_votes

Allerdings , diese Alternativen haben Nachteile, wie z. B. einen unnötigen Index-Overhead oder eine deutliche Vergrößerung der Tabellengröße.

Antwort:

Ja, es ist möglich, einen nicht-primären Index automatisch zu erhöhen Schlüssel, indem Sie einen Index für diese Spalte erstellen. Das folgende Beispiel erstellt eine Tabelle mit einer automatisch inkrementierenden testInc-Spalte:

<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>

Experten raten jedoch dringend von dieser Vorgehensweise ab. Ein geeigneterer Ansatz besteht darin, comment_id zum Primärschlüssel zu machen und die Integrität durch einen eindeutigen Index für (book_id, timestamp, user_id) zu erzwingen. Dieser Ansatz stellt einen geeigneten Primärschlüssel für die Tabelle bereit und folgt dem Prinzip der geringsten Überraschung.

Das obige ist der detaillierte Inhalt vonKann ich einen 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!

Stellungnahme:
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