Den Primärschlüssel sofort erfahren

Wenn ich mit

insert into test values ("","Wert1,„Wert2“,…)

was bei SQL eintragen und die Tabelle an erster stelle einen Primärschlüssel hat, wir der Wert ja mit jedem Eintrag hochgezählt.
Wie kann ich nun direkt nach dem „insert“ erfahren, welcher Wert für den Datensatz automatisch vergeben wurde?

Gruß,

Dirk.

Hi Dirk,

Wie kann ich nun direkt nach dem „insert“ erfahren, welcher
Wert für den Datensatz automatisch vergeben wurde?

Ähm, ganz einfach:

select MAX(ID) from tabelle

Günther

echo mysql_insert_id();
könnte dir helfen.

alternativ im mysql_query:
SELECT LAST_INSERT_ID()

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Super,
das war es!

Vielen Dank :smile:

Hallo Günter und Dirk :smile:

Wie kann ich nun direkt nach dem „insert“ erfahren, welcher
Wert für den Datensatz automatisch vergeben wurde?

Ähm, ganz einfach:

select MAX(ID) from tabelle

Hiervon möchte ich freundlich abraten.
Dieses Vorgehen ist außerhalb von Transaktionen und ohne Absicherung von Prozessen/Threads sehr gefährlich.
Wenn zeitlich gesehen zwischen dem letzten INSERT-Befehl und der o.g. SELECT MAX(ID)-Query weitere INSERT’s auf die gleiche Tabelle geschehen (z.B. durch einen parallelen Seitenaufruf), erhält der Aufrufer hier ein falsches Ergebnis.

mysql_insert_id() liefert hier aber threadgesichert stets das gewünschte Ergebnis des letzten vom aktuellen MySQL/PHP-Thread aufgerufenen INSERT-Befehl und wäre somit zu bevorzugen (bzw. die SQL-Variante).

Sonntägliche Grüße, :wink:
Hagen

1 Like