W MariaDB, LAST_INSERT_ID()
to wbudowana funkcja, która zwraca pierwszą wygenerowaną automatycznie wartość pomyślnie wstawioną dla AUTO_INCREMENT
kolumna w wyniku ostatnio wykonanego INSERT
oświadczenie.
Można go również wywołać z argumentem, w którym to przypadku zwraca wartość wyrażenia i następne wywołanie LAST_INSERT_ID()
zwróci tę samą wartość.
Składnia
Funkcję można wywołać w następujący sposób:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
Gdzie expr
zwracane jest następne wywołanie LAST_INSERT_ID()
zwróci tę samą wartość.
Przykład
Jako przykład stwórzmy tabelę z AUTO_INCREMENT
kolumna:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
kolumna używa AUTO_INCREMENT
za jego wartość.
Teraz wstaw kilka wierszy:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
Teraz uruchommy LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Wynik:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+
Zwraca 3
.
Teraz zwróćmy wszystkie wiersze w tabeli, aby sprawdzić, czy ostatni wiersz zawiera AUTO_INCREMENT
wartość 3
wstawiono:
SELECT *
FROM guest;
Wynik:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | +----------+------------+
guest_id
kolumna wzrasta do 3
.
W tym argument
Jak wspomniano, jeśli zostanie wywołana z argumentem, funkcja zwraca wartość wyrażenia i następne wywołanie LAST_INSERT_ID()
zwróci tę samą wartość.
SELECT LAST_INSERT_ID(9);
Wynik:
+-------------------+ | LAST_INSERT_ID(9) | +-------------------+ | 9 | +-------------------+
Teraz zadzwoń ponownie, ale bez argumentów:
SELECT LAST_INSERT_ID();
Wynik:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 9 | +------------------+
Nadal zwraca wartość 9
.
Jeśli jednak nadal będziemy wstawiać wartości do naszego guest
tabela, AUTO_INCREMENT
będzie kontynuowane tam, gdzie zostało przerwane na tym stole:
INSERT INTO guest (guest_name) VALUES ('Lisa');
Teraz uruchommy LAST_INSERT_ID()
:
SELECT LAST_INSERT_ID();
Wynik:
+------------------+ | LAST_INSERT_ID() | +------------------+ | 4 | +------------------+
Zwraca 4
.
A oto jak teraz wygląda stół:
SELECT *
FROM guest;
Wynik:
+----------+------------+ | guest_id | guest_name | +----------+------------+ | 1 | Homer | | 2 | Bart | | 3 | Marge | | 4 | Lisa | +----------+------------+
Więcej informacji na temat tej funkcji można znaleźć w dokumentacji MariaDB.