INSERT/UPDATE Conditionnel

Résolu
cs_Perse Messages postés 5 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 18 août 2005 - 28 juil. 2005 à 09:28
Malab29 Messages postés 7 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 1 mai 2010 - 27 déc. 2008 à 18:53
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

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 9
28 juil. 2005 à 16:50
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
3
cs_Perse Messages postés 5 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 18 août 2005
28 juil. 2005 à 18:34
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.
0
Malab29 Messages postés 7 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 1 mai 2010
27 déc. 2008 à 18:53
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
0