IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Recuperer la dernière ligne entrée dans une table


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Points : 117
    Points
    117
    Par défaut Recuperer la dernière ligne entrée dans une table
    La plupart des infos sont dans le titre ^^

    Voila le shemas de la table :
    TABLE :{#TAB_ID,TAB_NOM,TAB_PARAM1,TAB_PARAM2,TAB_PARAM3}

    le TAB_ID est généré automatiquement.

    j'aimerai donc recupere le dernier tab_id rentré dans ma table. sachant que la combinaison TAB_MON,TAB_PARAM1,TAB_PARAM2,TAB_PARAM3 n'est pas forcement unique.

    J'ai pensé faire une requete avant l'insersion recherchant tous les TAB_ID ayant la meme combinaison de TAB_MON,TAB_PARAM1,TAB_PARAM2,TAB_PARAM3, puis de selectionner celle qui n'y est pas apres l'insersion.

    je pense faire cela dans une transaction, mais je me demande ce qui se passerai si entre l'insersion et la requete une autre ligne été inserer par quelqu'un d'autre ? Es-que faire une transaction suffira a garantir que je recupère bien ID du dernier enregistrement ?
    Mieux vaut poser une question con que de le rester.
    Ya pas que le whisky dans la vie y a la vodka aussi.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 848
    Points : 52 964
    Points
    52 964
    Billets dans le blog
    6
    Par défaut
    Ce que vous demandez est impossible !
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L5

    SI vous voulez en revanche la ligne dont l'id autoincrémenté est maximum (ce qui n'est pas la même chose) alors vous pouvez faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM MaTable
    WHRE MonId = (SELECT Max(MonId) FROM MaTable);
    Cela ne vous garantis aucunement qu'il s'agit de la dernière ligne insérée... En effet tout mécanisme d'auto incrément bine ficelé est débrayable...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Points : 117
    Points
    117
    Par défaut
    Je me suis peut etre mal exprimé, ce que je veux faire c'est recuperer l'id de la ligne que je viens d'inserer, c'est pas exactement la meme chose.

    C'est pour crée une ligne dans une autre table correspondant à cette ligne. Mise a part l'id tous peut etre identique. Sa ne servira que dans ce cas !
    Mieux vaut poser une question con que de le rester.
    Ya pas que le whisky dans la vie y a la vodka aussi.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    C'est impossible.
    Le seul moyen que je connaisse c'est d'ajouter un champ date dans lequel tu mets le timestamp et a partir de la tu récuperes le max de cette date et tu auras la derniere ligne insérée

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 032
    Points : 23 767
    Points
    23 767
    Par défaut
    Quel est ton SGBDR ? Parce que certains (MySQL par exemple) permettent d'avoir le dernier ID inséré.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    En effet tout mécanisme d'auto incrément bine ficelé est débrayable...
    En clair, ça donne quoi ?
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  7. #7
    Membre régulier
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Points : 117
    Points
    117
    Par défaut
    Ma sgbd c'est MS SQL Server. mais c'est pas le problème car sa peut changer. si je voulais les informations pour une sgbd particulière j'aurais poster sur le forum de cette sgbd.

    Merci pour les reponses.
    Mieux vaut poser une question con que de le rester.
    Ya pas que le whisky dans la vie y a la vodka aussi.

  8. #8
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par ITCsoft54 Voir le message
    Ma sgbd c'est MS SQL Server. mais c'est pas le problème car sa peut changer. si je voulais les informations pour une sgbd particulière j'aurais poster sur le forum de cette sgbd.

    Merci pour les reponses.
    Alors la reponse compte tenu de votre modele de données est : IMPOSSIBLE comme l'a expliqué SQLPro.
    La seule solution serait de créér un colonne datant votre enregistrement (et si vous faites des insertions de masses, vous risquez d'avoir la meme valeur pour plusieurs enregistrements).

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

Discussions similaires

  1. Récupérer la dernière ligne insérée dans une table
    Par sou_rif dans le forum Développement
    Réponses: 7
    Dernier message: 04/09/2022, 14h11
  2. Réponses: 2
    Dernier message: 28/08/2009, 15h43
  3. [H2Database] Obtenir la dernière ligne créée dans une table
    Par jmnicolas dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 26/06/2008, 10h28
  4. Réponses: 2
    Dernier message: 30/11/2005, 09h55
  5. Nombre de ligne maxi dans une table ACCESS
    Par ygiraudeau dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo