Récupérer la valeur d'un champ autoincrémenté après une insertion

Pour gérer les clés dans les tables de bases de données, selon le moteur, on utilise des champs autoincrémentés ou des générateurs.

J'avais déjà indiqué comment récupérer le dernier indice d'autoincrément suite à un INSERT avec FireDAC sur une base de données SQLite. Pour les autres systèmes de bases de données la connection FireDAC (TFDConnection) nous fournit directement une fonction pour ça : GetLastAutoGenValue.

Avec Interbase ou Firebird il faut lui passer le nom du générateur dont on veut la valeur actuelle. Elle correspond au dernier numéro de compteur utilisé.

Avec Oracle, c'est le nom de la séquence ayant contribué au comptage.

Si vous ne savez pas quel nom utiliser, regarder ce que la méthode GetGeneratorNames vous retournera.

Avec MySQL, MariaDB, SQL Server et la plupart des bases de données il suffit de passer une chaîne vide pour avoir le numéro du compteur du dernier INSERT. Attention : si vous chaînez les INSERT c'est la valeur du dernier, toutes tables confondues, sur la session courante qui sera retourné.


Suite à la publication de ce billet Serge Girard m'a indiqué qu'une autre solution était disponible sur certaines bases de données et détaillée sur cette page de la documentation de FireDAC : la requête d'insertion peut retourner la valeur d'autoincrément avec le mot clé "returning".