sql >> Databáze >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() Vysvětleno

V MariaDB, LAST_INSERT_ID() je vestavěná funkce, která vrací první automaticky vygenerovanou hodnotu úspěšně vloženou pro AUTO_INCREMENT jako výsledek naposledy provedeného INSERT prohlášení.

Může být také volán s argumentem, v takovém případě vrátí hodnotu výrazu a další volání LAST_INSERT_ID() vrátí stejnou hodnotu.

Syntaxe

Funkci lze volat následujícími způsoby:

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Kde expr je vráceno a další volání LAST_INSERT_ID() vrátí stejnou hodnotu.

Příklad

Jako příklad vytvoříme tabulku s AUTO_INCREMENT sloupec:

CREATE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

guest_id sloupec používá AUTO_INCREMENT pro jeho hodnotu.

Nyní vložte několik řádků:

INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Nyní spustíme LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Výsledek:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+

Vrací 3 .

Nyní vraťme všechny řádky v tabulce, abychom ověřili, že poslední řádek obsahuje AUTO_INCREMENT hodnotu 3 vloženo:

SELECT *
FROM guest;

Výsledek:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Bart       |
|        3 | Marge      |
+----------+------------+

guest_id sloupec jde nahoru na 3 .

Včetně argumentu

Jak bylo zmíněno, pokud je funkce volána s argumentem, vrátí hodnotu výrazu a další volání LAST_INSERT_ID() vrátí stejnou hodnotu.

SELECT LAST_INSERT_ID(9);

Výsledek:

+-------------------+
| LAST_INSERT_ID(9) |
+-------------------+
|                 9 |
+-------------------+

Nyní to zavolejte znovu, ale bez argumentů:

SELECT LAST_INSERT_ID();

Výsledek:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                9 |
+------------------+

Stále vrací hodnotu 9 .

Pokud však budeme pokračovat ve vkládání hodnot do našeho guest tabulka AUTO_INCREMENT bude pokračovat tam, kde na tomto stole skončil:

INSERT INTO guest (guest_name) VALUES ('Lisa');

Nyní spustíme LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Výsledek:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+

Vrací 4 .

A takto vypadá tabulka nyní:

SELECT *
FROM guest;

Výsledek:

+----------+------------+
| guest_id | guest_name |
+----------+------------+
|        1 | Homer      |
|        2 | Bart       |
|        3 | Marge      |
|        4 | Lisa       |
+----------+------------+

Další informace o této funkci najdete v dokumentaci MariaDB.


  1. Připojení FlySpeed ​​SQL Query k Salesforce.com

  2. Webinář:Nové funkce v Postgres 12 [Následovat]

  3. Jak se mohu zbavit těchto komentářů ve výpisu MySQL?

  4. Upravte počáteční hodnotu Django AutoField