MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB LAST_INSERT_ID() explicado


No MariaDB, LAST_INSERT_ID() é uma função interna que retorna o primeiro valor gerado automaticamente inserido com sucesso para um AUTO_INCREMENT coluna como resultado do INSERT executado mais recentemente demonstração.

Também pode ser chamado com um argumento, nesse caso, ele retorna o valor da expressão e a próxima chamada para LAST_INSERT_ID() retornará o mesmo valor.

Sintaxe


A função pode ser chamada das seguintes maneiras:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)

Onde expr é retornado e a próxima chamada para LAST_INSERT_ID() retornará o mesmo valor.

Exemplo


Como exemplo, vamos criar uma tabela com um AUTO_INCREMENT coluna:
CREATE TABLE guest (
  guest_id INT NOT NULL AUTO_INCREMENT,
  guest_name VARCHAR(255) NOT NULL,
  PRIMARY KEY (guest_id)
);

O guest_id coluna usa AUTO_INCREMENT pelo seu valor.

Agora insira algumas linhas:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');

Agora vamos executar LAST_INSERT_ID() :
SELECT LAST_INSERT_ID();

Resultado:
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+

Ele retorna 3 .

Agora, vamos retornar todas as linhas da tabela para verificar se a última linha tem um AUTO_INCREMENT valor de 3 inserido:
SELECT *
FROM guest;

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

O guest_id coluna sobe para 3 .

Incluindo um argumento


Como mencionado, se chamada com um argumento, a função retorna o valor da expressão e a próxima chamada para LAST_INSERT_ID() retornará o mesmo valor.
SELECT LAST_INSERT_ID(9);

Resultado:
+-------------------+
| LAST_INSERT_ID(9) |
+-------------------+
|                 9 |
+-------------------+

Agora chame-o novamente, mas sem argumento:
SELECT LAST_INSERT_ID();

Resultado:
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                9 |
+------------------+

Ele ainda retorna um valor de 9 .

No entanto, se continuarmos a inserir valores em nosso guest tabela, o AUTO_INCREMENT continuará de onde parou nessa tabela:
INSERT INTO guest (guest_name) VALUES ('Lisa');

Agora vamos executar LAST_INSERT_ID() :
SELECT LAST_INSERT_ID();

Resultado:
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+

Ele retorna 4 .

E aqui está como está a tabela agora:
SELECT *
FROM guest;

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

Para obter mais informações sobre essa função, consulte a documentação do MariaDB.