Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la méthode standard pour obtenir le dernier identifiant d'insertion ?

Voir cette réponse Récupérer l'ID de ligne inséré dans SQL

En bref, il n'y a pas de moyen de faire cela entre les bases de données, à l'exception de MAX(ID) - mais ce n'est pas un résultat garanti et comporte de nombreux pièges, par exemple

  • d'autres insertions peuvent intervenir entre la dernière insertion et la requête maximale
  • ne peut pas être utilisé avec des tables de transactions élevées (max émettra un verrou de lecture, les méthodes spécifiques à rdbms ne lisent aucune table)

La norme ANSI relative à l'identité/numéro automatique/auto_increment/séquences est apparue pour la première fois dans SQL:2003 en attente de mise en œuvre par tous les principaux SGBDR. Il ressemblera très probablement aux séquences Oracle/PostgreSQL.

Un autre changement dans SQL:2003 est la OUTPUT USING CLAUSE mais il y a très peu d'informations à ce sujet. Sybase et SQL Server ont fait des choses différentes avec lui, donc on ne sait pas encore comment cela se déroulera. SQL Server l'implémente comme

INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)