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

MS SQL Server Discussion :

Récupéré le dernier code auto incrémente insérer


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Récupéré le dernier code auto incrémente insérer
    Bonjour ,

    j'ai une question : comment en peut récupérer le dernier code auto incrémente insérer dans une ancienne transaction d’hier ou bien d'une date précédente ??

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Sans la définition de la table, ça va être difficile de vous aider.
    Merci de lire la charte de postage

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Bonjour,
    la structure de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create table etudiant (code int primary key identity, nom varchar(50)).
    le problème c'est que par exemple la première ligne prend le code 1 , puis je supprime cette ligne et lorsque j'ajoute une nouvelle ligne prend le code 2 !! donc je veux comment récupérer le dernier code généré ??

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Dans ce cas utilisez SCOPE_IDENTITY()

    @++

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Il m'a retourner NULL !!
    par ce que je veux pas utiliser après un insert .
    Citation Envoyé par elsuket Voir le message
    Dans ce cas utilisez SCOPE_IDENTITY()

    @++

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Citation Envoyé par zaghi
    Il m'a retourner NULL !!
    par ce que je veux pas utiliser après un insert .
    Pourtant :

    Citation Envoyé par zaghi
    le problème c'est que par exemple la première ligne prend le code 1 , puis je supprime cette ligne et lorsque j'ajoute une nouvelle ligne prend le code 2 !!
    Si vous aviez lu la charte de postage comme je vous l'ai demandé, vous auriez vu qu'il est de bon ton de poster la requête.
    Sinon vous perdez votre temps, et celui de ceux qui tentent de vous aider avec.

    Également, si vous aviez lu la documentation de SCOPE_IDENTITY(), vous auriez vu :

    Renvoie la dernière valeur d'identité insérée dans une colonne d'identité dans la même étendue
    @++

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai tester cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ident_current('etudiant')
    il m'a retourner NULL , et l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SCOPE_IDENTITY()
    aussi il retourne NULL .
    je peux reformuler mon question : comment récupérer la dernière valeur d'identité insérée dans une colonne d'identité mais pas dans la même étendue?

  8. #8
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    bonjour,

    Si tu stock la date d'insertion dans ta table tu peux récupérer l'id associé à la création la plus récente, sinon tu peux faire un max( id ) en cas d'int.

    Tu as aussi la solution de stocker lors de ton insertion le scope_identity() dans une table afin de l'exploiter plus tard.

    Cordialement,
    Lyche

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Merci Lyche pour votre aide
    la dernière solution va résolu le problème , mais je veux une fonction simple qui permet de retourner le dernier code générer son créer une nouvelle table .
    par exemple :
    aujourd'hui je fait une requête insert grâce a mon application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO etudiant VALUES ('ZAGHI')
    l'etudiant ZAGHI prend le code 1 et je fait ensuite une suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM etudiant WHERE code=1
    je ferme mon application et je ouvrir , dans ce cas lorsque je veux récupérer le dernier code générer (le 1) les trois méthode ca marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(code) FROM etudiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ident_current('etudiant')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SCOPE_IDENTITY()

  10. #10
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Question bête : pourquoi vouloir récupérer le dernier id généré ? Il n'a a priori aucun intérêt en tant que tel.

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Non c'est pas une question d’intérêt , la question c'est que sql server a une chose pour le stockage de valeur des colonnes identité , sois en supprime la dernière enregistrement ou non il récupéré la dernière valeur générer . donc je dis que il existe une fonction pour le récupérer .
    Citation Envoyé par Rei Ichido Voir le message
    Question bête : pourquoi vouloir récupérer le dernier id généré ? Il n'a a priori aucun intérêt en tant que tel.

  12. #12
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Normalement IDENT_CURRENT fait exactement ça ; ça ne sort NULL que si la table n'est pas reconnue (mauvais schéma, peut-être ?). Cependant la question de savoir à quoi sert le fait de connaitre la dernière valeur utilisée reste posée.

  13. #13
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Normalement IDENT_CURRENT fait exactement ça ; ça ne sort NULL que si la table n'est pas reconnue
    Ou si la table n'a pas de colonne avec la propriété IDENTITY

    @++

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup Rei Ichido , la fonction c'est : IDENT_CURRENT qui renvoie la dernière valeur d'identité générée pour une table spécifique dans n'importe quelles session et étendue
    IDENT_CURRENT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/04/2008, 10h29
  2. [WD9]champ auto-incrémente par code
    Par loic20h28 dans le forum WinDev
    Réponses: 4
    Dernier message: 25/02/2008, 20h53
  3. Réponses: 0
    Dernier message: 22/12/2007, 16h28
  4. Une commande qui récupère l'auto incrément?
    Par ndsaerith dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 28/07/2006, 16h04
  5. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09

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