Téléchargement
illégal
Posez votre question Signaler

[SQL] INSERT ou UPDATE suivant le cas... [Résolu]

Nico - Dernière réponse le 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.
Lire la suite 

[SQL] INSERT ou UPDATE suivant le cas »

6 réponses
Réponse
+8
moins plus
salut

utilise MERGE
Nico - 21 mars 2006 à 10:44
Merci bacchuss,
en effet cette commande semble répondre à mes besoins (vive Ora9i........)
A+
Nico - 21 mars 2006 à 14:33
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.
bacchuss- 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 … );
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « [SQL] INSERT ou UPDATE suivant le cas... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?