Rechercher : dans
Par :

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

Dernière réponse le 21 mar 2006 à 21:25:05 Nico, le 20 mar 2006 à 10:29:41 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [SQL] INSERT ou UPDATE suivant le cas... » dans :
Pascal - Tri par insertion - Récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ...
Update failed avg free VoirLorsque vous souhaitez mettre à jour votre antivirus AVG Free, celui-ci affiche le message suivant : update failed , the connection with update server has failed La traduction de ce message est la suivante : la mise a jour a échoué, votre...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
LaTeX - Insertion d'images VoirStyle LaTeX permet d'insérer des images de différents formats. Le plus simple est d'insérer des fichiers de type eps (Encapsuled Postscript) : Il suffit d'insérer dans le préambule la ligne suivante : \usepackage{graphicx} Puis d'insérer...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

hssissen, le 20 mar 2006 à 21:01:54
  • +1

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.

Répondre à hssissen

2

bacchuss, le 20 mar 2006 à 22:13:39
  • +4

Salut

utilise MERGE __________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss

3

Nico, le 21 mar 2006 à 10:44:04

Merci bacchuss,
en effet cette commande semble répondre à mes besoins (vive Ora9i........)
A+

Répondre à Nico

4

Nico, le 21 mar 2006 à 14:33:30

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.

Répondre à Nico

5

 bacchuss, le 21 mar 2006 à 21:25:05
  • +17

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 … );
__________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss