Trigger sous SQL SERVEUR 2000

Résolu
ashtheking Messages postés 229 Statut Membre -  
ashtheking Messages postés 229 Statut Membre -
Bonjour,

N'étant pas développeur, cette question me parait insurmontable mais je suis sûr qu'en fait c'est hyper facile.

Voilà, je cherche à créer un trigger qui lors d'un INSERT vérifiera d'abord que le NOMUTIL (une colonne) n'existe pas déjà avant de valider l'entrée ou de le rejeter (si le nom existe déjà).

Ma table se nomme UTIL, elle possède six colonne : IDUTIL (clé primaire autoincrémenté), NOMUTIL, EMAILUTIL, SEXEUTIL et SALAIRE UTIL.

Pourriez-vous, svp, me donner, ne serait qu'un bout de la syntaxe a utiliser ( j'ai déjà
CREATE TRIGGER pasdedoublon
ON util
INSTEAD OF insert

AS

....
Merci d'avance
A voir également:

2 réponses

Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour,

Si tu veux éviter d'avoir deux fois la même valeur pour la colonne NOMUTIL, tu peux créer un index unique sur cette colonne et tu n'auras pas besoin d'un trigger
create unique index id_nomutil on util(nomutil)


A plus
0
ashtheking Messages postés 229 Statut Membre 97
 
UN grand, un très grand MERCI à Christounet pour ta réponse que je vais m'empresser d'utiliser.

Néanmoins, pour édification personelle, j'aimerai quand même connaître la requête du trigger anti doublon.
0
Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour,

Alors le code devrait être le suivant (je ne l'ai pas testé)
CREATE TRIGGER pasdedoublon
ON util
FOR INSERT
AS 
DECLARE @rows int
SELECT @Rows = COUNT(*)
  FROM util u JOIN INSERTED i ON u.nomutil = i.nomutil
IF @Rows > 0
BEGIN
   ROLLBACK -- on annule l'insertion
   RAISERROR ('Nom utilisateur déjà existant',10,1)
   RETURN
END

Lors de l'instruction INSERT la table temporaire inserted contiens les nouvelles valeurs, donc on vérifie avec l'instruction count(*) le nombre de fois que le nomutil existe déjà. Si c'est plus grand que 0 (juste un petit doute, peut-être faut-il tester sur plus grand que 1), on annule la transaction en cours et génère un message d'erreur.

A plus
0
ashtheking Messages postés 229 Statut Membre 97
 
Encore une fois, merci.
Ca va bien m'aider à avancer.

Problème résolu.
0