Trigger sous SQL SERVEUR 2000
Résolu/Fermé
ashtheking
Messages postés
223
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
7 avril 2009
-
25 juin 2008 à 10:46
ashtheking Messages postés 223 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 7 avril 2009 - 1 juil. 2008 à 08:12
ashtheking Messages postés 223 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 7 avril 2009 - 1 juil. 2008 à 08:12
A voir également:
- Trigger sous SQL SERVEUR 2000
- Changer serveur dns - Guide
- Serveur pop - Guide
- Serveur dns gratuit - Guide
- Serveur dns orange - Accueil - Guide box et connexion Internet
- Verification de l'identité du serveur impossible - Forum iPhone
2 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
25 juin 2008 à 11:58
25 juin 2008 à 11:58
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
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
25 juin 2008 à 14:09
25 juin 2008 à 14:09
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
ashtheking
Messages postés
223
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
7 avril 2009
97
1 juil. 2008 à 08:12
1 juil. 2008 à 08:12
Encore une fois, merci.
Ca va bien m'aider à avancer.
Problème résolu.
Ca va bien m'aider à avancer.
Problème résolu.
25 juin 2008 à 13:33
Néanmoins, pour édification personelle, j'aimerai quand même connaître la requête du trigger anti doublon.