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

SQL Procédural MySQL Discussion :

Trigger qui vérifie l'insertion en base


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut Trigger qui vérifie l'insertion en base
    Bonjour,

    J'aimerais créer un trigger qui vérifie les insertion en base et qui annule une requete si le contenu est incorrect.

    J'ai pensé un truc du genre qu'en pensez vous ? enfin elle marche pas non plus ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER insert_boucle 
    BEFORE INSERT ON infoflux FOR EACH ROW SET infoflux.partenaire='BOUCLE'
    Je suis débutant et la doc n'est pas trés claire

    Merci a vous

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut
    Bonjour,

    J'ai un petit problème lors de la création d'un trigger sou mysql.

    Je souhaite faire une purge des données, j'ai donc créer un trigger apres insert il réalise celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER purge AFTER insert ON correlation
    BEGIN
    delete from `infoflux` where TO_DAYS(NOW()) - TO_DAYS(date) <= 3;
    END
    De plus mon premier message et toujours d'actualité, j'aimerais savoir si il est possible vérifier la valeur avant l'insertion et de ne pas insert les valeurs le cas échéant

    Merci a vous

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    -Pour le différence de deux date sa existe la fonction datediff(date1, date2);
    -Pour la vérification tu peux vérifier les donnés d'une table avant insertion.
    a la place de AFTER tu met before et récupérer tes donne de la table Inserted.

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    tu dois connaitre les mots clés NEW et OLD...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut
    Je dois donc réaliser une trigger comme celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TRIGGER insert_boucle BEFORE INSERT ON infoflux
    FOR EACH ROW
      BEGIN
         IF NEW.partenaire = "BOUCLE" THEN
              Je ne sais pas quoi mettre
         END IF;
      END
    Par contre je me demande comme j'arrête l'insertion il y existe une commande ?
    ou faut-il mettre un truc du genre NEW.infoflux = 0 ?

    Merci encore de votre aide, j'avance ^^

  6. #6
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    http://dev.mysql.com/doc/refman/5.0/...item-23-4-1-12

    si tu mets l'insertion dans une condition, tu as moyen de l'éviter.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Le seul moyen de déclencher une erreur dans un trigger mysql pour éviter une insertion est d'exécuter une commande illégale (par exemple, division par 0, violer une contrainte, etc).

    Pour la purge, il faut utiliser l'index !! donc obligatoirement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM `infoflux` WHERE date < DATE_SUB( NOW(), INTERVAL n DAYS );

Discussions similaires

  1. Trigger qui vérifie inscription à un groupe
    Par Darkjovem dans le forum Développement
    Réponses: 14
    Dernier message: 28/04/2011, 14h56
  2. Serialize qui bug à l'insertion en base
    Par jgoetzfr dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2010, 20h50
  3. Trigger qui vérifie l'existence de fichiers
    Par roman67 dans le forum SQL
    Réponses: 22
    Dernier message: 10/02/2010, 10h37
  4. trigger qui realise une insertion sur une autre base
    Par kamy86 dans le forum Débuter
    Réponses: 1
    Dernier message: 21/07/2009, 15h29
  5. Réponses: 9
    Dernier message: 20/10/2006, 14h32

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