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

ASP.NET Discussion :

Comment récupérer l'identifiant autoincrémenté ?


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    Par défaut Comment récupérer l'identifiant autoincrémenté ?
    bonjour,

    Voilà une portion d'un code test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    connection.Open();
     
            SqlCommand command = connection.CreateCommand();
            SqlTransaction transaction;
     
            // **********
            transaction = connection.BeginTransaction("SampleTransaction");
     
            // **********
            command.Connection = connection;
            command.Transaction = transaction;
     
            try
            {
                command.CommandText ="Insert into Table1 VALUES ('blablabla', 'blabla')";
                command.ExecuteNonQuery();
                command.CommandText ="Insert into Table2 (id, champ2) VALUES (@@identity, 'blablabla')";
                command.ExecuteNonQuery();
                command.CommandText ="Select * from Table3 where idTable3 = @@identity";
     
    ..
    ....
    .....
    La table Table1 contient une clé primaire autoincrementé,

    Les problèmes:

    1- Je veux insérer cette clé juste généré dans la table2, mais je ne suis pas sûr que cette clé c'est celle généré dans ma première requête ou bien c'est une clé de la première requête d'un autre utilisateur qui travaille au même temps que moi.

    3- La troisième requête ne marche pas. @@identity est perdu.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    salut,

    tu peux faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT @@IDENTITY AS 'Identity'
    Par exemple un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    command.CommandText =
     
    "Insert into Table1 
    VALUES ('blablabla', 'blabla')
    SELECT @@IDENTITY AS 'Identity'";
    Juste après tu le récupère et tu l'utilises dans les deux requêtes suivantes ...
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    La gestion de l'autoincrément est variable suivant le SGBD.
    Lequel utilises-tu ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2003
    Messages : 108
    Points : 129
    Points
    129
    Par défaut
    l'objet SqlTransaction indique qu'il s'agit de SQL server
    du coup il faut que tu renvoie @@identity en fin de requête comme dit précedemment

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    Par défaut
    J'ai testé d'abord dans l'analyse de requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Insert into Table1 VALUES ('blablabla', 'blabla')
    SELECT @@IDENTITY AS 'Identity'
    Insert into Table2 (id, champ2) VALUES (@@identity, 'blablabla')
    Select * from Table3 where idTable3 = @@identity
    j'ai remplacé @@identity par Identity --> erreur
    j'ai remplacé @@identity par @Identity --> erreur
    j'ai remplacé @@identity par 'Identity' --> erreur
    J'ai laissé @@identity ---> ne donne pas la solution

    J'ai pas bien compris la solution. Mais je vous remercie.

    J'ai trouvé une autre solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    declare @identity as int
    Insert into Table1 VALUES ('blablabla', 'blabla')
    set @identity = @@IDENTITY
    Insert into Table2 (id, champ2) VALUES (@identity , 'blablabla')
    Select * from Table3 where idTable3 = @identity

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2014, 11h59
  2. Comment récupérer l'identifiant d'une liste déroulante
    Par jackprime dans le forum Langage
    Réponses: 3
    Dernier message: 05/11/2013, 06h46
  3. Réponses: 0
    Dernier message: 09/02/2010, 23h20
  4. Comment récupérer l'identifiant du (des) CPU ?
    Par Invité dans le forum Langage
    Réponses: 0
    Dernier message: 09/02/2010, 23h20
  5. Comment récupérer l'identifiant d'une ligne en erreur lors d'un update
    Par backseatgreg dans le forum Développement
    Réponses: 1
    Dernier message: 20/07/2008, 12h32

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