Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2011, 18h21   #1
Invité régulier
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 7
Points : 7
Par défaut Controle variable existe dans une bd avec une procedure

Salut à tous

J'ai une procedure stockée basique permettant un insert

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
CREATE PROCEDURE  INSERT
		-- Add the parameters for the stored procedure here
	    @var1 nvarchar(100),
	    @var2 nvarchar(500),
	    @var3 int,
	    @var4 int,
	    @var5 varchar(200)
 
	AS
 
	BEGIN
 
		 INSERT INTO matable
		(Champ1, Champ2, Champ3, Champ4, Champ5)
		 VALUES
		(@var1, @var2, @var3, @var4, @var5)
END
qui fonctionne bien.

Mais je voudrais la completer, enfaite je voudrais qu'au moment de l'insert on verifie si la valeur de var2 existe deja dans la bd et si oui qu'elle renvoie un message d'erreur a l'utilisateur.

Je sais pas si c'est possible dans une procedure stockée ?
Gregney est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 00h01   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
pas besoin de faire une procédure pour vérifier si une valeur est déjà en base:
utiliser une clef étrangère :
http://msdn.microsoft.com/fr-fr/library/ms175464.aspx
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 01h19   #3
Invité régulier
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 7
Points : 7
Bonsoir et merci pour ta reponse

Mais par contre, au risque de paraitre vraiment pas douer je t'avoue ne pas trop comprendre l'idée ?
Gregney est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 07h24   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
Bonjour,

Pouvez-vous donner :

- le vrai code de la procédure stockée,
- le script complet de création de la table,
- la raison pour laquelle vous voulez vérifier que cette valeur existe déjà

7gyY9w1ZY6ySRgPeaefZ, j'aurai plutôt utilisé une contrainte d'unicité

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 10h05   #5
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
pas besoin de faire une procédure pour vérifier si une valeur est déjà en base:
utiliser une clef étrangère :
http://msdn.microsoft.com/fr-fr/library/ms175464.aspx
__________________

Lui il ne veut PAS qu'elle existe...

C'est en effet une contrainte d'unicité qu'il faut utiliser...

Ajoutez une contrainte unique sur la colonne var2 de votre table...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 16h21   #6
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Citation:
Envoyé par iberserk Voir le message
Lui il ne veut PAS qu'elle existe...
effectivement, j'ai lu trop vite...
Donc une contrainte d'unicité, oui, autant pour moi!
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web