[SQL] INSERT ou UPDATE suivant le cas...

Résolu
Nico -  
haroun- Messages postés 762 Statut Membre -
Bonjour à tous,

Comment faire dans une requete SQL (sous Oracle9i), pour insérer un enregistrement si celui-ci n'est pas dans la Table, ou le modifier si celui-ci est présent.
Sans bien sûr faire de SELECT avant, je crois qu'il existe une commande qui permet de gérer l'INSERT ou l'UPDATE suivant le cas.
Merci à tous pour votre aide.

3 réponses

  1. bacchuss Messages postés 1165 Statut Membre 190
     
    salut

    utilise MERGE
    8
    1. Nico
       
      Merci bacchuss,
      en effet cette commande semble répondre à mes besoins (vive Ora9i........)
      A+
      0
    2. Nico
       
      Décidemment, je ne m'en sort pas avec cette commande....
      Peut etre, vous pouvez m'aider, car je cherche des infos sur le net, mais je ne trouve rien, et je n'arrive pas à construire m'a requete qui semble a 1ere vue "simple" :

      Voila ce que je souhaite faire:
      J'ai une table TABLE1 (2 champs : datevisite , nbvisite), je souhaite faire un UPDATE (de nbvisite=nbvisite+1) si datevisite=SYSDATE
      Sinon (Pas d'enregistrement pour datevisite=SYSDATE), je souhaite faire un INSERT (avec datevisite=SYSDATE et nbvisite=1)

      J'ai essayer de faire des choses avec la commande MERGE, mais sans résultat.

      Merci d'avance pour votre aide.
      0
    3. bacchuss Messages postés 1165 Statut Membre 190
       
      MERGE INTO emp e
      USING emp_ref s    
      ON (e.emp_id = s.emp_id)
      WHEN MATCHED THEN UPDATE 
      	SET e.name = s.name
      WHEN NOT MATCHED THEN INSERT (emp_id, name … )
      	VALUES (emp_id, name … );
      0
  2. haroun- Messages postés 762 Statut Membre 3
     
    bonjour
    y a t il un moyen d'insérer deux lignes ou plus dans un tableau on utilisant une seul commande sql avec oracle 10g version express
    je veux dire par exemple si je veux éxécuter deux commande insert du genre:

    INSERT INTO livre (code_livre,titre,themes,date_edit,nb_pages)
    VALUES ('51','introduction to database deseign','base de donnée',to_date('2001/10/23','YYYY/MM/DD'),'300');
    INSERT INTO livre (code_livre,titre,themes,date_edit,nb_pages)
    VALUES(30,"Programmation OO","base de donnée",to_date('2001/01/14','YYYY/MM/DD'),250);

    es ce qu'il y a un moyen de les fusionner en une seul fonction insert et lancer une seul commande
    merci
    2
  3. hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
     
    Salut Nico,
    Tu as deja repondu a ta question. Dans SQL, pour insérer une nouvelle données sans qu'elle soit dans la table:
    Pour insérer des données dans chaque colonne da la table sur une seule ligne:
    insert into ta_table
    values ('val1','val2',...,[NULL])

    ou bien inserer une ou plusieurs nouvelles variables sur une seule ligne:
    insert into ta_table
    (var1,var2,....)
    values ('valeur var1','valeur var2',...)

    Bien sur ceci n'est qu'un simple exemple, on peut faire avec plusieurs autres optins. Par exemple insérer des variables d'un tableau dans un autre tableau...

    Pour modifier des valeurs dans un tableau on le fait avec la commande UPDATE. Où l'exemple le plus simple est de modifier une seule colonne d'un tableau:
    UPDATE ta_table
    SET nom_colonne='value'
    WHERE des_conditions

    PS:bien sur il ya une infinité d'autres exemples, c'est a toi de voir ce que tu veux réellement faire!

    J'esprère que ceci pourrait t'aider.
    0