2 Stimmen

Wie kann man eine eindeutige automatisch inkrementierte ID für Zeilen über mehrere Tabellen hinweg erreichen?

Ich habe mehrere Tabellen in einer Datenbank, sagen wir, sie heißen Tabelle 1, Tabelle 2, usw. Alle Tabellen haben eine Primärschlüsselspalte 'id' mit automatischer Inkrementierung.

In meiner aktuellen Konfiguration passiert es, dass beim Einfügen in Tabelle 1 die generierte id 1 ist. Wenn ich dann in Tabelle 2 einfüge, ist die generierte id ebenfalls 1.

Wie kann ich absolut eindeutige ids in allen Tabellen einer Datenbank erzwingen? Ich möchte, dass beim Einfügen in Tabelle 1 die generierte id 1 ist und wenn danach in Tabelle 2 eingefügt wird, die generierte id 2 ist?

Ich habe MySQL-Server auf einem Computer verwendet und hatte dieses Problem nicht, aber als ich MySQL auf meinem lokalen Computer installiert habe, begann es aufzutreten. Ich denke, es muss sich um eine Art von Einstellung handeln, die auf die MySQL-Konfiguration angewendet wird?

Vielen Dank

3voto

mjb Punkte 7059

Sie können UUID verwenden.

INSERT INTO mytable(id, name) VALUES(SELECT UUID(), 'etwas Daten');

Erfahren Sie mehr über UUID: http://mysqlbackupnet.codeplex.com/wikipage?title=Using%20MySQL%20With%20GUID%20or%20UUID

0voto

NullPointer Punkte 2718

Sie können eine SEQUENCE erstellen, die global verwendet werden kann.

ERSTELLEN SIE SEQUENCE serial
  INKREMENT 1
  MINDESTWERT 0
  MAXIMALWERT 200
  START 364
  CACHE 1;

Bearbeitung: Sequenzen werden in Postgres unterstützt, aber dies kann in MySql erreicht werden, indem der Wert für AUTO_INCREMENT festgelegt wird und man LAST_INSERT_ID() verwenden kann. link

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X