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

Résolu/Fermé
Nico - 20 mars 2006 à 10:29
haroun-
Messages postés
708
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
17 décembre 2021
- 29 nov. 2009 à 09:13
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

bacchuss
Messages postés
1162
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
6 avril 2009
190
20 mars 2006 à 22:13
salut

utilise MERGE
8
Merci bacchuss,
en effet cette commande semble répondre à mes besoins (vive Ora9i........)
A+
0
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
bacchuss
Messages postés
1162
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
6 avril 2009
190
21 mars 2006 à 21:25
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
haroun-
Messages postés
708
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
17 décembre 2021
3
29 nov. 2009 à 09:13
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
hssissen
Messages postés
844
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
9 janvier 2017
50
20 mars 2006 à 21:01
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