Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O equivalente da função SQLServer SCOPE_IDENTITY() no mySQL?


Isto é o que você procura:
LAST_INSERT_ID()

Em resposta ao comentário do OP, criei o seguinte teste de bancada:
CREATE TABLE Foo
(
    FooId INT AUTO_INCREMENT PRIMARY KEY
);

CREATE TABLE Bar
(
    BarId INT AUTO_INCREMENT PRIMARY KEY
);

INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();

CREATE TRIGGER FooTrigger AFTER INSERT ON Foo
    FOR EACH ROW BEGIN
        INSERT INTO Bar () VALUES ();
    END;

INSERT INTO Foo () VALUES (); SELECT LAST_INSERT_ID();

Isso retorna:
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+

Então ele usa o LAST_INSERT_ID() da tabela original e não da tabela INSERT inserido dentro do gatilho.

Editar: Percebi depois de todo esse tempo que o resultado do SELECT LAST_INSERT_ID() mostrado na minha resposta estava errado, embora a conclusão no final estivesse correta. Eu atualizei o resultado para ser o valor correto.