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'insertion ( équivalence mysql )


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut Problème d'insertion ( équivalence mysql )
    Bonjour à tous,

    Je travaille depuis peu sur sql server 2000 et j'avoue etre un peu dans le flou.
    J'ai pour habitude de travailler avec mysql et j'ai des reflexes.

    Comment fait on pour inserer des données sachant qu'il y des clés etrangéres dans differentes tables.

    Exemple : Un client a une adresse de facturation donc dans latable client, je vais avoir le numero id de l'adresse de facturation

    En mysql je ferai ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ins_adresse = mysql_query("insert into adresse_facturation (fac_adresse,fac_cp,fac_ville) values ('$adresse_f','$cp_f','$ville_f')") ;
     
    $id_adr = mysql_insert_id($ins_adresse) ;
     
    $ins_client = mysql_query("insert into client
    (adr_id,cli_titre,cli_nom,cli_prenom,cli_telephone,cli_fax,cli_email) values ('$id_adr','$titre','$nom','$prenom','$tel','$fax','$email')") ;
    Je récupére l'id de la derniere insertion de ma table adresse et je l'affecte au champ clé etrangére de ma table client.

    Je rappelle que je suis débutant et je voudrais donc savoir si en sql server il existe des regles pour les insertions de ce type.

    Merci à tous !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    pas compris la question

    1- Dans ta table client, tu as un identifiant qui pointe sur une adresse de facturation c'est ca ?

    2- Ces identifiants d'adresse de facturation sont dans une table qui contient l'adresse de facturation c'est ca ?

    3- Tu veux intégrer un client, sachant que tu connais son adresse de facturation c'est ca ?

  3. #3
    Membre expérimenté
    Inscrit en
    Février 2003
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 182
    Par défaut
    si ton champ a le type identity (autoincrement)

    tu peux avoir la dernière valeur dans la variable


    A+

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Citation Envoyé par ZERS
    pas compris la question

    1- Dans ta table client, tu as un identifiant qui pointe sur une adresse de facturation c'est ca ?

    2- Ces identifiants d'adresse de facturation sont dans une table qui contient l'adresse de facturation c'est ca ?

    3- Tu veux intégrer un client, sachant que tu connais son adresse de facturation c'est ca ?
    oui je veux créer un client en lui affectant un id d'adresse au préalablement inséré.

    comment gérer ce @@identity ?

  5. #5
    Membre expérimenté
    Inscrit en
    Février 2003
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 182
    Par défaut
    @@identity te donne la valeur du dernier champ identity de n'importe quelle table mis à jour.
    Donc c'est tu es sûr que le dernier identity mis à jour, avant ton second insert , est celui de table adresse_facturation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into client
    (adr_id,cli_titre,cli_nom,cli_prenom,cli_telephone,cli_fax,cli_email) 
    values (@@identity,'$titre','$nom','$prenom','$tel','$fax','$email')")
    A toi d'adapter la syntaxe de l'insert avec celui de sql server.

    A+

  6. #6
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    j'ai fait comme ceci en fait ( j'ai trouvé ça sur google )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ins_adresse = mssql_query("insert into adresse_facturation (fac_adresse,fac_cp,fac_ville) values ('$adresse_f','$cp_f','$ville_f'); 
    select @@IDENTITY as id_adr") ;
     
    $id_adresse = mssql_fetch_array($ins_adresse) ;
    $id_fac = $id_adresse["id_adr"] ;
     
    $ins_client = mssql_query("insert into client
    (fac_id,fon_id,cli_titre,cli_nom,cli_prenom,cli_telephone,cli_fax,cli_email) 
    values 
    ('$id_fac','$fonction','$titre','$nom','$prenom','$tel','$fax','$email'); select @@IDENTITY as id_cli") ;
     
    $id_client = mssql_fetch_array($ins_client) ;
    $id_cli = $id_client["id_cli"] ;
    ça recupere bien l'id et ça l'insere nikel

    merci !

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

Discussions similaires

  1. [MySQL] Problème d'insertion dans mysql
    Par evo3081 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/08/2012, 21h51
  2. Problème avec INSERT dans MySQL
    Par Ercan67000 dans le forum Débuter
    Réponses: 4
    Dernier message: 09/01/2012, 09h17
  3. Problème d'INSERT avec caractères accentués: mysql 5.0
    Par yizashi dans le forum Installation
    Réponses: 2
    Dernier message: 05/04/2006, 10h26
  4. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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