Trigger sous SQL SERVEUR 2000
Résolu/Fermé
ashtheking
ashtheking
- Messages postés
- 223
- Date d'inscription
- mardi 23 octobre 2007
- Statut
- Membre
- Dernière intervention
- 7 avril 2009
ashtheking
- Messages postés
- 223
- Date d'inscription
- mardi 23 octobre 2007
- Statut
- Membre
- Dernière intervention
- 7 avril 2009
A voir également:
- Trigger sous SQL SERVEUR 2000
- Trigger sous SQL SERVEUR 2000 ✓ - Forum - SQL Server
- Vb6 et sql serveur 2000 distant ✓ - Forum - VB / VBA
- Trigger sql serveur ✓ - Forum - SQL Server
- Sql serveur - Forum - Programmation
- Sql server 2000 windows 10 - Forum - SQL Server
2 réponses
Christounet
25 juin 2008 à 11:58
- Messages postés
- 1263
- Date d'inscription
- mercredi 26 septembre 2007
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
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
25 juin 2008 à 14:09
- Messages postés
- 1263
- Date d'inscription
- mercredi 26 septembre 2007
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
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
1 juil. 2008 à 08:12
- Messages postés
- 223
- Date d'inscription
- mardi 23 octobre 2007
- Statut
- Membre
- Dernière intervention
- 7 avril 2009
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.