Bonjour à tous,
sauriez-vous quelle est la requête sql permettant d'obtenir la ligne la plus récente insérée sur une table donnée ?
Merci d'avance pour votre aide.
Bonjour à tous,
sauriez-vous quelle est la requête sql permettant d'obtenir la ligne la plus récente insérée sur une table donnée ?
Merci d'avance pour votre aide.
Ce n'est possible que
- si vous avez des colonnes techniques d'horodatage dans votre table, et sous réserve que votre CPU ne soit pas très performante, car dans l'absolu, même un time-stamp n'est pas forcément unique, même si dans les faits les cas de doubles sont très rares.
- si votre clef est calculée via une table de chrono gérée par l'application
- si vous avez une trace d'audit applicative (activée par trigger par exemple)
Attention, même si vous utilisez des identity columns, vous n'avez pas de garantie que la séquence soit respectée, en cas de delete, les "trous" peuvent être réutilisés
Bonjour,
Sur IBM i (à vérifier sur les autres environnements !), tu peux intégrer un SELECT au moment de ton INSERT afin de récupérer l'enregistrement que tu es en train d'insérer.
Très utile lorsque tu veux récupérer l'identifiant d'une ligne générée par un incrément automatique. Par exemple (Z1 étant la colonne insérée automatiquement par auto-incrément) :
Un exemple complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Z1 FROM FINAL TABLE ( INSERT INTO tablexx (z2, z3) VALUES(XXXX, 25)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE formation.personne( id_pers INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), nom_pers CHAR(20) CCSID 297 DEFAULT NULL , prenom_pers FOR COLUMN PRENO00001 CHAR(20) CCSID 297 DEFAULT NULL , id_spec INTEGER DEFAULT NULL )Le résultat du SELECT (colonne id_pers) contient la valeur de l'auto-incrément.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT id_pers FROM FINAL TABLE ( INSERT INTO formation.personne (nom_pers, prenom_pers, id_spec) VALUES('MONNOM', 'Dominique', 25);
Dominique
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager