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 :

sql update et insert dans la meme requete


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut sql update et insert dans la meme requete
    Bonjour est il possible de faire un insert et un update en meme temps(dans la meme requete) sur 2 donnees differentes?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    selon le SGBD que tu utilise tu peut faire ca dans une procedure stockée...

    sinon ca depend ce que tu veut faire : tu peut par exemple mettre une contrainte CHECK dans la creation de ta table.

    explique mieux ce que tu veut faire ca sera plus simple

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J ai une 1er table EMP(Nom, prenom, Sexe)
    qui contient l'enregistrement suivant

    Dupond JJ M

    Une 2e table EMP_More_Info(Nom, prenom, Sexe)
    qui contient 2 enregistrements:

    Dupondddd JJ M
    Durand JP M

    Je souhiaterais, DANS LA MEME REQUETE, Modifier dans la table EMP le 1er enregistrement afin d'obtenir Dupondddd et non Dupond et de rajouter le 2e enregistrement de la table EMP_More_Info a la table EMP qui n'existe pas dans cette derniere

    J'espere avoir ete assez claire

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 56
    Points
    56
    Par défaut
    Impossible avec une simple instruction SQL. Par contre, comme dit pilomption, il y a moyen de le faire (en fonction du SGBD) en une seule instruction avec proc, trigger ou en placant une contrainte mais je ne suis pas sûr que c'est ce que tu recherches.
    Autre idée : Si c'est le fait que ces deux modif se fassent ensemble et non pas prendre le risque, en cas de problème, que seule une des deux mises à jour ai lieu, place les au sein d'une transation.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    je pense que ca doit etre plus simple que ca mais comment fait on avec la transaction?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 56
    Points
    56
    Par défaut
    Begin transaction
    insert ...
    update ...
    commit

    Syntax à vérifier en fonction du SGBD
    Rajouter éventuellement une gestion des erreurs

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    ben si tu veut tu peut faire en PHP/MySQL par exemple :
    mysql_query("INSERT...;UPDATE...");

    il y aura 2 requetes mais qu'une seule ligne

    PS : ca reste a verifié quand meme !

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par dbafranck
    Impossible avec une simple instruction SQL.
    Si : la commande MERGE sous ORACLE fait exactement cela, mais j'ignore quels autres moteurs l'implémantent ou si c'est une syntaxe normée...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 56
    Points
    56
    Par défaut
    Effectivement, l'instruction merge sous Oracle à partir de la 9i permet de faire un update si la ligne existe et un insert si elle n'existe pas.
    Dans l'exemple donné, il faudrait que la clé primaire porte sur une colonne différente de celle à mettre à jour afin de pouvoir faire la jointure. Or, des colonnes sexe ou prénom ne sont pas de bons condidats. A voir si dans le modèle réelle, une vrai clé existe ou peut être rajoutée.

Discussions similaires

  1. requetes SQL update et insert
    Par toufiqihaddou dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 10/07/2011, 15h43
  2. [MySQL] Select et insert sur 2 serveurs différents dans la meme requete
    Par tMSun dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/09/2008, 10h41
  3. requete update et insertion dans 2 tables
    Par croke dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/05/2008, 12h45
  4. UPDATE de deux tables dans une meme requete
    Par onizuka159 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/05/2007, 14h09
  5. comment faire un insert, + select + update dans la meme requete
    Par jam92400 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 27/06/2006, 18h33

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