Rechercher : dans
Par :

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

Dernière réponse le 29 nov 2009 à 09:13:31 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 :
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
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...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

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

6

 haroun-, le 29 nov 2009 à 09:13:31
  • +1

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

Répondre à haroun-