©SQL :: Manager
HomeProgramm-InformationenTechnische DetailsKostenloser DownloadKaffee für den Autor
Netzwelt
SQL-FunktionMySQLMariaDB

Die LAST_INSERT_ID SQL-Funktion in MySQL und MariaDB - Letzter AUTO_INCREMENT-Wert

LAST_INSERT_IDSyntax:LAST_INSERT_ID([Ausdruck])
Rückgabe-Wert:INTEGER
Funktions-Typ:Informations-Funktion
Funktions-Beschreibung

Die SQL-Funktion LAST_INSERT_ID() gibt den ersten automatisch generierten Wert zurück, der bei einer INSERT-Anweisung in eine AUTO_INCREMENT-Spalte eingefügt wurde.

Wenn keine Zeilen eingefügt wurden, bleibt der Wert von LAST_INSERT_ID() unverändert.

Wenn LAST_INSERT_ID() mit dem Argument "Ausdruck" aufgerufen wird, gibt die Funktion den Wert von "Ausdruck" zurück und der nächste Aufruf von LAST_INSERT_ID() gibt denselben Wert zurück, wenn vorher keine INSERT-Anweisung ausgeführt wurde, die einen AUTO_INCREMENT-Wert generierte.

Wenn keine Zeilen erfolgreich eingefügt wurden, gibt die LAST_INSERT_ID()-Funktion 0 zurück oder den letzten AUTO_INCREMENT-Wert einer vorherigen INSERT-Ausführung.

Bei fehlerhaften Transaktionen bleibt der Wert von LAST_INSERT_ID() undefiniert.

Beim Ausführung von ROLLBACK wird der Wert von LAST_INSERT_ID() nicht auf den Wert vor der Transaktion zurückgesetzt. Er bleibt so, wie er zum Zeitpunkt des ROLLBACK war.


Bei gespeicherten Routinen (Prozeduren, Funktionen oder Trigger) ändert sich der Wert von LAST_INSERT_ID() wie folgt:

Wenn eine gespeicherte Prozedur ausführt wird, die den Wert von LAST_INSERT_ID() ändert, wird der neue Wert auch von Anweisungen gesehen, die dem Prozeduraufruf folgen.

Bei gespeicherten Funktionen und Triggern wird der Wert wiederhergestellt, der vor Aufruf feststand, sodass nachfolgende Anweisungen keinen geänderten Wert sehen.

SQL Beispiele für die LAST_INSERT_ID-Funktion

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

DROP TABLE IF EXISTS `test_table`;
    
CREATE TABLE `test_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `type` enum('First','Second','Third','Last'DEFAULT NULL,
  `num` int(11) NOT NULL DEFAULT 0,
  `price` decimal(10,2) NOT NULL DEFAULT 0.00,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
ENGINE=InnoDB;

INSERT INTO `test_table` (`id`,`name`,`type`,`num`,`price`VALUES 
(1,'Art 1','First',1,10.50),
(2,'Art 2','Second',3,12.50),
(3,'Art 3','Second',2,15.50);

select last_insert_id(); /* returns 0, No Value */

truncate `test_table`;

INSERT INTO `test_table` (`name`,`type`,`num`,`price`VALUES 
('Art 1','First',1,10.50),
('Art 2','Second',3,12.50),
('Art 3','Second',2,15.50);

select last_insert_id(); /* returns 1, First Value */

select * from `test_table`;

INSERT INTO `test_table` (`name`,`type`,`num`,`price`VALUES 
('Art 4','Last',1,10.50);

select last_insert_id(); /* returns 4, Last Value */

select * from `test_table`;

select last_insert_id(12); /* returns 12 */
select last_insert_id(); /* returns 12 */

INSERT INTO `test_table` (`name`,`type`,`num`,`price`VALUES 
('Art 5','Last',1,10.50);

select last_insert_id(); /* returns 5, Last Value */

last_insert_id()
bigint(21)
0
last_insert_id()
bigint(21)
1
id
name
type
num
price
int(11)varchar(20) LATIN1enum LATIN1int(11)decimal(10,2)
1Art 1First110.50
2Art 2Second312.50
3Art 3Second215.50
last_insert_id()
bigint(21)
4
id
name
type
num
price
int(11)varchar(20) LATIN1enum LATIN1int(11)decimal(10,2)
1Art 1First110.50
2Art 2Second312.50
3Art 3Second215.50
4Art 4Last110.50
last_insert_id(12)
bigint(2)
12
last_insert_id()
bigint(21)
12
last_insert_id()
bigint(21)
5
Die Beispiele wurden mit dem MyWAY SQL-Manager erstellt: Download

Verwendung der LAST_INSERT_ID() Funktion in MySQL und MariaDB-Datenbanken

In MySQL und MariaDB wird die Funktion LAST_INSERT_ID() verwendet, um den Wert abzurufen, der für eine AUTO_INCREMENT-Spalte während der letzten INSERT-Operation generiert wurde. Die Funktion erfordert keine Argumente, gibt den letzten automatisch generierten Wert innerhalb der aktuellen Sitzung zurück und kann innerhalb von SQL-Anweisungen oder Transaktionen verwendet werden.

Mit dieser Funktion kann um Beispiel der letzte generierte Primärschlüsselwert zur weiteren Verarbeitung oder zur Referenzierung in anderen Tabellen abgerufen werden. Bei mehrzeiligen INSERT-Operation, die mehrere AUTO_INCREMENT-Werte generiert, gibt die LAST_INSERT_ID()-Funktion ausschließlich den zuletzt generierten Wert zurück. Der zurückgegebene Wert kann auch verwendet werden, um ihn mit anderen verwandten Daten in der Anwendungslogik zu verknüpfen oder die Datenkonsistenz über mehrere Tabellen hinweg aufrechtzuerhalten.

Die Funktion gibt den zuletzt generierten Wert innerhalb der aktuellen Sitzung (Session) zurück und liefert daher möglicherweise keine genauen Ergebnisse, wenn mehrere Sitzungen gleichzeitig INSERT-Vorgänge ausführen.
IS_IPV6IS_UUIDISNULLLAST_INSERT_IDLAST_VALUELASTVALLCASE

Weitere MySQL und MariaDB SQL Informations-Funktionen

BENCHMARKBENCHMARK(Anzahl, Ausdruck)
Mehr zur BENCHMARK-Funktion

BINLOG_GTID_POSBINLOG_GTID_POS()

CHARSETCHARSET(Zeichenkette)
Mehr zur CHARSET-Funktion

COERCIBILITYCOERCIBILITY(Zeichenkette)
Mehr zur COERCIBILITY-Funktion

COLLATIONCOLLATION(Zeichenkette)
Mehr zur COLLATION-Funktion

CONNECTION_IDCONNECTION_ID()
Mehr zur CONNECTION_ID-Funktion

CURRENT_USERCURRENT_USER()
Mehr zur CURRENT_USER-Funktion

CURRENT_ROLECURRENT_ROLE()
Mehr zur CURRENT_ROLE-Funktion

DATABASEDATABASE()
Mehr zur DATABASE-Funktion

DECODE_HISTOGRAMDECODE_HISTOGRAM()

DEFAULTDEFAULT(Spalte)
Mehr zur DEFAULT-Funktion

FOUND_ROWSFOUND_ROWS()
Mehr zur FOUND_ROWS-Funktion

LAST_VALUELAST_VALUE(Ausdruck [, Ausdruck ...])
Mehr zur LAST_VALUE-Funktion

ROWNUMROWNUM()

ROW_COUNTROW_COUNT()
Mehr zur ROW_COUNT-Funktion

SCHEMASCHEMA()
Mehr zur SCHEMA-Funktion

SESSION_USERSESSION_USER()
Mehr zur SESSION_USER-Funktion

SYSTEM_USERSYSTEM_USER()
Mehr zur SYSTEM_USER-Funktion

USERUSER()
Mehr zur USER-Funktion

VERSIONVERSION()
Mehr zur VERSION-Funktion

Numerische FunktionenZeichenketten-FunktionenReguläre AusdrückeDatum und Zeit-Funktionen
Vergleichs-FunktionenVerschlüsselung & KomprimierungKonvertierungs-FunktionenNULL-Funktionen
Aggregat-FunktionenWindow-FunktionenJSON-FunktionenGeometrische Funktionen
Sequenz-FunktionenInformations-FunktionenDynamische Tabellen-SpaltenSonstige Funktionen
Weitere Informationen zur SQL-Funktion LAST_INSERT_ID: mysql.com und mariadb.com
Aktualisiert: 17.09.2023ImpressumKontaktGeschäftsbedingungenDatenschutz & CookiesUpdatesSitemapFacebookLinkedinTwitterStatistics©2020-2024 Heino Cunze-Fischer