INSERT/UPDATE Conditionnel [Résolu]

cs_Perse
Messages postés
5
Date d'inscription
lundi 26 avril 2004
Dernière intervention
18 août 2005
- 28 juil. 2005 à 09:28 - Dernière réponse : Malab29
Messages postés
7
Date d'inscription
jeudi 21 mai 2009
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.........
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Zlub
Messages postés
815
Date d'inscription
mercredi 11 octobre 2000
Dernière intervention
29 septembre 2010
- 28 juil. 2005 à 16:50
3
Merci
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

Merci Zlub 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Zlub
cs_Perse
Messages postés
5
Date d'inscription
lundi 26 avril 2004
Dernière intervention
18 août 2005
- 28 juil. 2005 à 18:34
0
Merci
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.
Commenter la réponse de cs_Perse
Malab29
Messages postés
7
Date d'inscription
jeudi 21 mai 2009
Dernière intervention
1 mai 2010
- 27 déc. 2008 à 18:53
0
Merci
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
Commenter la réponse de Malab29

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.