my_ulonglong mysql_insert_id(MYSQL *mysql)
Beschreibung
Liefert den von der vorherigen INSERT
- oder
UPDATE
-Anweisung für eine
AUTO_INCREMENT
-Spalte generierten Wert.
Verwenden Sie diese Funktion, wenn Sie eine
INSERT
-Anweisung auf einer Tabelle mit
einem AUTO_INCREMENT
-Feld ausgeführt
haben.
Genauer gesagt: mysql_insert_id()
wird
unter folgenden Bedingungen aktualisiert:
INSERT
-Anweisungen, die einen Wert in
einer AUTO_INCREMENT
-Spalte speichern,
und zwar unabhängig davon, ob der Wert automatisch durch
Speichern der Spezialwerte NULL
oder
0
in der Spalte generiert oder ob ein
expliziter, nichtspezieller Wert gespeichert wurde.
Bei einer mehrzeiligen INSERT
-Anweisung
liefert mysql_insert_id()
den
ersten automatisch
generierten AUTO_INCREMENT
-Wert. Wurde
kein solcher Wert generiert, liefert die Funktion den
letzten explizit in die
AUTO_INCREMENT
-Spalte eingefügten
Wert.
INSERT
-Anweisungen, die einen
AUTO_INCREMENT
-Wert generieren, indem
sie
LAST_INSERT_ID(
in eine Spalte einfügen.
expr
)
INSERT
-Anweisungen, die einen
AUTO_INCREMENT
-Wert generieren, indem
sie eine Spalte auf
LAST_INSERT_ID(
setzen.
expr
)
Der Wert von mysql_insert_id()
wird
nicht von Anweisungen wie SELECT
beeinflusst, die eine Ergebnismenge zurückgeben.
Wenn die obige Anweisung einen Fehler zurückgab, ist der
Wert von mysql_insert_id()
undefiniert.
Beachten Sie, dass mysql_insert_id()
den
Wert 0
liefert, wenn die Anweisung keinen
AUTO_INCREMENT
-Wert verwendet. Wenn Sie den
Wert zur späteren Benutzung speichern möchten, müssen Sie
unmittelbar nach der Anweisung, die den Wert generiert,
mysql_insert_id()
aufrufen.
Der Wert von mysql_insert_id()
wird nur von
Anweisungen beeinflusst, die innerhalb der aktuellen
Clientverbindung gegeben werden, aber nicht durch Anweisungen
von anderen Clients.
Siehe Abschnitt 12.10.3, „Informationsfunktionen“.
Bitte beachten Sie auch, dass der Wert der SQL-Funktion
LAST_INSERT_ID()
immer den zuletzt
generierten AUTO_INCREMENT
-Wert enthält.
Dieser wird zwischen zwei Anweisungen nicht zurückgesetzt, da
der Wert dieser Funktion im Server gespeichert ist. Ein
weiterer Unterschied ist der, dass
LAST_INSERT_ID()
nicht aktualisiert wird,
wenn Sie eine AUTO_INCREMENT
-Spalte auf
einen bestimmten Wert setzen, der kein Spezialwert ist.
Der Grund für den Unterschied zwischen
LAST_INSERT_ID()
und
mysql_insert_id()
besteht darin, dass
LAST_INSERT_ID()
in Skripten einfach zu
benutzen sein soll, während
mysql_insert_id()
versucht, etwas genauere
Informationen über die Vorgänge in der
AUTO_INCREMENT
-Spalte zu liefern.
Rückgabewerte
Siehe oben.
Fehler
Keine.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.