IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

TRIGGER (test avant ajout) ne fonctionne pas correctement


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 321
    Points
    321
    Par défaut TRIGGER (test avant ajout) ne fonctionne pas correctement
    Bonjour,

    je viens vous demander de l'aide à propos d'un trigger sous SQL Serveur 2005 qui ne fait absolument pas ce que je lui demande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE TRIGGER CONTROLEXIST]
    ON  MEMBRES
    FOR INSERT,UPDATE
     
    AS 
    DECLARE @nom nvarchar(100)
    DECLARE @prenom nvarchar(100)
    SET @nom = (SELECT NOM FROM INSERTED)
    SET @prenom = (SELECT PRENOM FROM INSERTED)
    BEGIN
          IF EXISTS(SELECT * FROM MEMBRES M
                         WHERE M.NOM = @nom
    	        AND M.PRENOM = @prenom)
                BEGIN
                      ROLLBACK
                END	
    END
    En gros, je veux simplement que, lorsque j'ajoute un membre dans la table, il ne soit pas inséré si il existe déjà.

    Ici, qu'il existe déjà ou non, il ne m'insère rien "la transaction s'est terminée dans le déclencheur...".
    Est-ce que quelqu'un a une idée du problème?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 389
    Points
    28 389
    Par défaut
    Et si tu te contentais d'un index unique sur (NOM, PRENOM) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 321
    Points
    321
    Par défaut
    et comment tu fais ces index uniques sur les deux colonnes?
    Car il faut que si le nom est le meme mais pas le même prénom, l'insertion ait lieu :p

    EDIT : c'est bon j'ai trouvé, au cas où je mets la solution meme si ce n'est pas du haut niveau ^^
    Il suffit de sélectionner les colonnes voulues puis d'aller dans Index/clés. Ensuite on ajoute les colonnes que l'on veut et il faut mettre le type : clé unique

    merci bien pour la solution

    même si j'aimerai bien comprendre pourquoi le trigger marchait pas

Discussions similaires

  1. Un test if qui ne fonctionne pas correctement
    Par Shinjuku dans le forum Langage
    Réponses: 6
    Dernier message: 26/02/2008, 10h52
  2. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27
  3. Le débogage ne fonctionne pas correctement
    Par BNS dans le forum Visual C++
    Réponses: 4
    Dernier message: 13/07/2006, 13h59
  4. Tests if{} elseif{} ne fonctionnent pas !!!
    Par tonguim dans le forum Langage
    Réponses: 12
    Dernier message: 07/05/2006, 14h59
  5. Réponses: 13
    Dernier message: 31/08/2005, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo