Finde den nächsten Wert der AUTO_INCREMENT Spalte in MySQL [duplizieren]

8

Ich benutze MySQL. Ich möchte den nächsten Wert abrufen, den die AUTO_INCREMENT-Spalte ohne Eingabe eines neuen Datensatzes benötigt.

%Vor%

In Orakel hätte ich sequencename.nextval(); benutzt Aber was soll ich in MySQL verwenden?

Hier ist, warum ich nicht benutzt habe

%Vor%

Angenommen, ich habe einen Eintrag mit id = 2. Jetzt wird die Spalten-ID den nächsten Wert als 3 annehmen. Bevor ich einen Datensatz mit ID = 3 erstellen, lösche ich den Datensatz mit ID = 2. Die Antwort auf die Frage, die ich erwähnt habe, ist 2. Aber ich möchte den tatsächlichen Wert 3, den die Spalte auto_increment sowieso annehmen wird.

    
Xperiaz X 12.08.2013, 11:10
quelle

3 Antworten

8

Fragen Sie den Tabellenstatus wie folgt ab:

%Vor%

Jetzt im Ergebnis erhalten Sie eine Spalte namens Auto_increment . Dies ist der Wert, nach dem Sie gefragt haben.

In JAVA:

%Vor%

Vollständiges Beispiel hier: Ссылка

    
Flash Thunder 12.08.2013, 11:18
quelle
1

Wenn ich das richtig verstehe, könnten Sie die Anzahl der Zeilen als Indikator verwenden:

%Vor%     
Mihai 12.08.2013 12:05
quelle
0

Es gibt keine Möglichkeit zu garantieren, welchen Wert Sie erhalten, bevor Sie die Zeile einfügen. Dies liegt hauptsächlich daran, dass Sie die gesamte Tabelle sperren müssen, um sicherzustellen, dass kein anderer Thread eine Einfügung mit "Ihrem" nächsten Wert vornimmt.

Sie können einen Wert reservieren, indem Sie eine Transaktion starten, eine Zeile einfügen, den Wert abrufen und dann einen Rollback durchführen. Dann können Sie diesen Wert sicher verwenden.

Es wird viel einfacher sein, einfach die Zeile einzufügen, also verstehe ich vielleicht nicht den Zweck dessen, was Sie tun.

    
Vatev 12.08.2013 11:25
quelle

Tags und Links