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.