MariaDB
 sql >> Database >  >> RDS >> MariaDB

Spiegazione di MariaDB LAST_INSERT_ID()

In MariaDB, LAST_INSERT_ID() è una funzione incorporata che restituisce il primo valore generato automaticamente inserito correttamente per un AUTO_INCREMENT colonna come risultato dell'ultimo INSERT eseguito dichiarazione.

Può anche essere chiamato con un argomento, nel qual caso restituisce il valore dell'espressione e la successiva chiamata a LAST_INSERT_ID() restituirà lo stesso valore.

Sintassi

La funzione può essere chiamata nei seguenti modi:

LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Dove expr viene restituito e la chiamata successiva a LAST_INSERT_ID() restituirà lo stesso valore.

Esempio

Ad esempio, creiamo una tabella con un AUTO_INCREMENT colonna:

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

Il guest_id la colonna utilizza AUTO_INCREMENT per il suo valore.

Ora inserisci alcune righe:

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

Ora eseguiamo LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Risultato:

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

Restituisce 3 .

Ora, restituiamo tutte le righe della tabella per verificare che l'ultima riga abbia un AUTO_INCREMENT valore di 3 inserito:

SELECT *
FROM guest;

Risultato:

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

Il guest_id la colonna va fino a 3 .

Incluso un argomento

Come accennato, se chiamata con un argomento, la funzione restituisce il valore dell'espressione e la successiva chiamata a LAST_INSERT_ID() restituirà lo stesso valore.

SELECT LAST_INSERT_ID(9);

Risultato:

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

Ora chiamalo di nuovo, ma senza argomenti:

SELECT LAST_INSERT_ID();

Risultato:

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

Restituisce comunque un valore di 9 .

Tuttavia, se continuiamo a inserire valori nel nostro guest tabella, il AUTO_INCREMENT continuerà da dove si era interrotto su quel tavolo:

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

Ora eseguiamo LAST_INSERT_ID() :

SELECT LAST_INSERT_ID();

Risultato:

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

Restituisce 4 .

Ed ecco come appare la tabella ora:

SELECT *
FROM guest;

Risultato:

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

Per ulteriori informazioni su questa funzione, vedere la documentazione di MariaDB.