INSERT/UPDATE Conditionnel

Résolu
Signaler
Messages postés
5
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
18 août 2005
-
Messages postés
7
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
1 mai 2010
-
Bonjour,

je cherche un moyen de faire un INSERT/UPDATE conditionnel.
C'est à dire que lors d'un INSERT, si la ligne existe déjà dans la table, je veux pouvoir faire un UPDATE à la place.

Si quelqu'un à la solution, merci d'avance.........

3 réponses

Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
Salut,

B'hein tu fais un SELECT count(*) as nb from taTable where champ1="..." and champ2="..."



si nb > 0 alors

UPDATE ..

else

INSERT ...

endif

ça serait sympas de préciser le type de base de données,

le langage de programmation ...


++

Zlub
Messages postés
5
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
18 août 2005

Salut Zlub et merci pour cette réponse.

En fait c'est du sql server et je cherchais quelque chose de proche du "ON DUPLICATE KEY UPDATE" de MySQL.

J'ai fini par me rabattre sur cette procédure stockée qui fonctionne bien :

CREATE PROCEDURE X_Ajout_Instit


@num_instituteur varchar(13),
@civilite_instituteur varchar(5),
@nom_instituteur text,
@nom_jeunefille_instituteur text,
@prenom_instituteur text,
@insee_instituteur varchar (25),
@cle_INSEE_instituteur int,
@adresse_instituteur text,
@hameau_instituteur text,
@code_postal_instituteur varchar (5),
@ville_instituteur text,
@tel_fixe_instituteur varchar (14),
@tel_portable_instituteur varchar (14),
@courriel_instituteur text,
@grade_instituteur varchar (2),
@zil_brigade_instituteur varchar (3),
@num_etablissement_instituteur varchar (13)


AS


IF NOT EXISTS (SELECT Num_Instituteur FROM instituteur WHERE Num_Instituteur = @num_instituteur)
INSERT INTO instituteur VALUES (@num_instituteur,
@civilite_instituteur,
@nom_instituteur,
@nom_jeunefille_instituteur,
@prenom_instituteur,
@insee_instituteur,
@cle_INSEE_instituteur,
@adresse_instituteur,
@hameau_instituteur,
@code_postal_instituteur,
@ville_instituteur,
@tel_fixe_instituteur,
@tel_portable_instituteur,
@courriel_instituteur,
@grade_instituteur,
@zil_brigade_instituteur,
@num_etablissement_instituteur)
ELSE
UPDATE instituteur
SET
civilite_instituteur = @civilite_instituteur,
nom_instituteur = @nom_instituteur,
nom_jeunefille_instituteur = @nom_jeunefille_instituteur,
prenom_instituteur = @prenom_instituteur,
insee_instituteur = @insee_instituteur,
cle_INSEE_instituteur = @cle_INSEE_instituteur,
adresse_instituteur = @adresse_instituteur,
hameau_instituteur = @hameau_instituteur,
code_postal_instituteur = @code_postal_instituteur,
ville_instituteur = @ville_instituteur,
tel_fixe_instituteur = @tel_fixe_instituteur,
tel_portable_instituteur = @tel_portable_instituteur,
courriel_instituteur = @courriel_instituteur,
grade_instituteur = @grade_instituteur,
zil_brigade_instituteur = @zil_brigade_instituteur,
num_etablissement_instituteur = @num_etablissement_instituteur
WHERE Num_Instituteur = @num_instituteur
GO

Avec en bleu les champs de ma table et en rose les variables que j'implémente depuis du dotnet.
Peut être qu'il y a mieux mais au moins sa fonctionne.
Messages postés
7
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
1 mai 2010

Salut,

Si tu utilises une base MySQL, il y a l'instruction
INSERT ... ON DUPLICATE KEY UPDATE


Documentation : http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html