Partage
  • Partager sur Facebook
  • Partager sur Twitter

mySQL, trigger et procédure

Anonyme
    7 décembre 2011 à 15:30:47

    Bonjour,

    Je viens sur ce forum afin qu'on m'apporte des solutions à mon problème.

    J'utilise phpmyadmin et j'aimerai pouvoir créer une procédure et un trigger pour vérifier une adresse mail avant la création ou la modification d'un utilisateur ou client de mon site. J'aimerai ne pas avoir de doublon d'adresse mail. Le pourquoi du comment de l'envie de faire cette vérification n'est pas importante.

    Voici ma procédure, qui vérifie si il y a plus même adresse mail :

    delimiter // 
    CREATE OR REPLACE PROCEDURE trigger_mail()
    BEGIN
    DECLARE nb_mail INT;
    SELECT COUNT(email) 
        INTO nb_mail
          FROM client 
            WHERE email = NEW.email;
      IF nb_mail >= 1 THEN
          RETURN NULL;
      END IF;
    END;
    delimiter ;
    


    Puis mon trigger, qui déclencheur ma fonction avant l'insertion ou la modification d'un client :

    delimiter // 
    CREATE OR REPLACE TRIGGER check_mail
      BEFORE INSERT OR UPDATE
      ON client
      FOR EACH ROW
      EXECUTE PROCEDURE trigger_mail();
    delimiter ;
    


    Vous remarquez que j'ai fais une fonction et un trigger juste pour l'adresse mail du client, et non pour l'utilisateur et le client. Il me semble pas qu'on puisse faire du 2 en 1.

    Mon problème est que ca ne fonctionne pas, je peux toujours créer plusieurs clients avec la même adresse mail. Et mes instructions sont acceptées par mySQL.
    Je tourne en rond, alors si certains pouvaient m'apporter un peu de le savoir, cela me serait bien utile.

    Merci.

    Cordialement,
    Kisamoi (?)
    • Partager sur Facebook
    • Partager sur Twitter
      7 décembre 2011 à 15:33:25

      Et si tu mettais une simple contrainte d'unicité sur la colonne email ?? Parce qu'un trigger pour ça, c'est un bazooka pour tuer une mouche...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        7 décembre 2011 à 15:51:06

        Ta comparaison m'a bien fait rigoler et je te remercie beaucoup de m'avoir répondu aussi rapidement.
        Je sais pas pourquoi je me suis obstiné à vouloir mettre un trigger pour ça...

        Du coup, ca fonctionne.

        Je met à disposition ma constraint u cas où, un autre illuminé comme moi aurait fait cette erreur.

        ALTER TABLE client
        ADD CONSTRAINT unique_mail UNIQUE (email)
        


        Merci encore Taguan.

        Cordialement,
        Kisamoi (?)
        • Partager sur Facebook
        • Partager sur Twitter

        mySQL, trigger et procédure

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown