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
--
Avant de poser ma question, j'ai essayer d'aider cinq personnes
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
--
Avant de poser ma question, j'ai essayer d'aider cinq personnes
Configuration: Windows 2003 Internet Explorer 7.0
A voir également:
- Trigger sous SQL SERVEUR 2000
- Changer serveur dns - Guide
- Serveur de reception mail - Guide
- Serveur dns gratuit - Guide
- Logiciel sql - Télécharger - Bases de données
- Serveur philips introuvable ✓ - Forum TV & Vidéo
2 réponses
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.