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 :

Problème d'ID et de multisessions


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Par défaut Problème d'ID et de multisessions
    Bonjour

    Je viens du forum ASP et on me renvoie ici pour mon problème.

    En effet je développe un intranet permettant de gérer des abonnements. Plusieurs personnes l'utilisent en même temps. Elle peuvent créer des abonnés. L'ajout se fait dans deux tables : INDIVIDU (contenant le numéro d'abonné plus d'autres infos) et ADRESSE (liée à INDIVIDU par le numéro d'abonné).
    Quand je crée un abonné, j'insère donc d'abord les données dans INDIVIDU puis ADRESSE. Il me faut donc entre les deux récupéré l'id généré automatiquement dans INDIVIDU pour insérer ensuite les infos dans ADRESSE.
    Mon problème c'est que plusieurs personnes peuvent créer un abonné en même temps et j'ai un gros doute sur la fiabilité de @@INDENTITY. Est-ce qu'il va vraiment me renvoyer le bon id ou y'a-t-il un risque ?
    J'ai lu la doc et ils parlent de session mais je ne sais pas du tout comment c'est géré, donc j'aimerai confirmation : est-ce qu'il est possible qu'un utilisateur ne récupère pas le bon id avec cette requête si un autre a fait une insertion en même temps ? Si oui, comment faire pour être certain de récupérer le bon id ?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 394
    Par défaut
    Session au sens MS SQL. Quand tu te connectes à MS SQL, tu ouvres "une session".
    Il n'y a aucun risque à utliser @@Identity juste après ton Insert bien sûr.
    A+

  3. #3
    Membre Expert Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Par défaut
    Donc si j'ai bien compris :

    Si :
    A fait un INSERT
    B fait un INSERT
    A fait SELECT @@IDENTITY

    Il n'y aura aucun problème ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 394
    Par défaut
    C'est qui A ?
    C'est qui B ?

  5. #5
    Membre Expert Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Par défaut
    Bon je sais mes questions sont bêtes mais j'ai pas envi de me faire taper sur les doigts parce que mon truc marche pas.

    Donc à priori A et B devraient être deux utilisateurs différents sur mon intranet mais je ne sais absolument pas comment c'est géré après au niveau des utilisateurs dans SQL SERVER.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 394
    Par défaut
    Dans ta page asp , peu importe A ou B , il y a code du SQL, non !

    Quand tu fais ton insert into ... // pour INDIVIDU
    De suite tu fais ton Select @@Identity
    Cette valeur (celle du Select @@Identity ) tu dois la récupérer
    Ensuite tu continues ton insert into .. // pour ADRESSE
    et tu places dans la Table ADRESSE , ID récupéré avec Select @@Identity

    Ta table INDIVIDU doit être du genre:
    IDIndividu , Nom , Prenom etc...

    Ta table ADRESSE doit être du genre:
    IDAdresse , IDIndividu , etc...

  7. #7
    Membre Expert Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Par défaut
    D'accord mais ca ne posera pas de problème si deux personnes sur l'intranet ajoute un individu en même temps ?

    Donc si j'ai bien compris : si dans mon code ASP j'ai le INSERT et le SELECT à suivre (ce qui est le cas), si les utilisateurs A et B envoient ces requêtes exactement en même temps, SQL SERVEUR va bien faire :
    INSERT A
    SELECT A
    INSERT B
    SELECT B

    Ou alors peut importe ?
    Ce que je ne sais pas c'est si A et B ont des sessions différentes sur SQL server et donc il n'y a aucun risque ou bien la session est la même car ils viennent tous les deux du server IIS ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 394
    Par défaut
    Ce que je ne sais pas c'est si A et B ont des sessions différentes sur SQL server
    "Session MSSQL" n'a rien à voir avec tes sessions ASP.
    Le moteur MSSQL va avoir à traiter des requêtes SQL et quand tes requêtes arrivent via ASP tu fais bien d'abord une connection (je ne sais plus le code car je suis php !) .
    Cette connection ou session elle sert pendant toutes tes requêtes SQL.
    Si en plus tu fais un

    BEGIN TRANSACTION

    ici ton insert puis ton @@identity et pour finir ton autre insert

    COMMIT TRANSACTION

    en cas de pépins ton INDIVIDU ne sera pas enregistré , ni son ADRESSE

    PS: à voir peut-être l'histoire de l'autocommit

    A+

  9. #9
    Membre Expert Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Par défaut
    Ok je ne connaissais pas "BEGIN TRANSACTION" et "COMMIT TRANSACTION", je vais essayer de me renseigner sur la facon d'écrire ca en ASP, merci

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

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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