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

Qual é a maneira padrão de obter o último ID de inserção?


Veja esta resposta Recuperar ID de linha inserido no SQL

Em suma, não há maneira de fazer isso entre bancos de dados, exceto MAX(ID) - mas isso não é um resultado garantido e tem muitas armadilhas, por exemplo.
  • outras inserções podem ocorrer entre a última inserção e a consulta máxima
  • não pode ser usado com tabelas de transações altas (max emitirá um bloqueio de leitura, métodos específicos de rdbms não leem de nenhuma tabela)

O padrão ANSI relacionado a identity/autonumber/auto_increment/sequences apareceu pela primeira vez em SQL:2003 aguardando implementação por todos os principais RDBMS. Provavelmente será semelhante a sequências Oracle/PostgreSQL.

Outra mudança no SQL:2003 é a OUTPUT USING CLAUSE mas há muito pouca informação sobre isso. O Sybase e o SQL Server fizeram coisas diferentes com ele, portanto, ainda não está claro como isso acontecerá. O SQL Server o implementa como
INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)