Trigger sous SQL SERVEUR 2000
Résolu
ashtheking
Messages postés
229
Statut
Membre
-
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
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:
- Trigger sous SQL SERVEUR 2000
- Changer serveur dns - Guide
- Serveur dns gratuit - Guide
- Serveur entrant et sortant - Guide
- Serveur dns orange - Accueil - Guide box et connexion Internet
- Logiciel sql - Télécharger - Bases de données
2 réponses
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
A plus
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
Bonjour,
Alors le code devrait être le suivant (je ne l'ai pas testé)
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
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
Néanmoins, pour édification personelle, j'aimerai quand même connaître la requête du trigger anti doublon.