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 :

Erreur dans TRIGGER


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 117
    Points : 39
    Points
    39
    Par défaut Trigger dans Mysql
    bonjour,
    comment ecrire le code qui permet d'incremonterla valeur d'un champs d'une table dés qu'on insere un nouveau enregistrement dans une autre table à l'aide de trigger
    Merci d'avoir me repondre

  2. #2
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER |
     
    CREATE TRIGGER nomTrigger BEFORE INSERT ON table1
      FOR EACH ROW BEGIN
        UPDATE table2 SET col1=col1+1 WHERE ...
    |
     
    DELIMITER ;
    Plus d'infos : http://dev.mysql.com/doc/refman/5.0/...e-trigger.html

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 117
    Points : 39
    Points
    39
    Par défaut Erreur dans TRIGGER
    Bonjour,
    J'ai créer un trigger ds mysql 5.0 comme suivant:
    DELIMITER |
    CREATE TRIGGER test BEFORE INSERT ON activite_journaliere
    FOR EACH ROW BEGIN
    UPDATE phase SET charge_reel = charge_reel+0.25 WHERE phase.code_phase=activite_journaliere.code_phase;
    END;
    | DELIMITER;

    mais il m'affiche un message d'erreur de syntaxe quand j'insere une nouvelle activité;
    Merci d'avance

  4. #4
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Dans un trigger avant/après insertion, l'objet NEW fait référence à la ligne qui va être ou a été insérée. Donc dans ton WHERE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE phase.code_phase = NEW.code_phase;
    Ensuite, tu as repris mon exemple en gardant un trigger qui s'exécute avant (BEFORE) l'insertion. Il vaut mieux l'exécuter après (AFTER).

    Et enfin, au cas où tu n'y aurais pas penser, n'oublie pas qu'il te faudra aussi un trigger AFTER UPDATE dans le cas où le code_phase d'une activité changerait. Ainsi qu'un trigger AFTER DELETE dans le cas où une activité serait supprimée.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 117
    Points : 39
    Points
    39
    Par défaut Autre erreur
    ca marche pour l'insertion d'une d'une nouvelle activité mais j'ai une erreur de syntaxe dans le trigger de delete voici mon code:
    DELIMITER |
    CREATE TRIGGER tester AFTER DELETE activite_journaliere
    FOR EACH ROW BEGIN
    UPDATE phase SET charge_reel =charge_reel - 0.25
    WHERE phase.code_phase=NEW.code_phase;
    END;
    | DELIMITER;

    Merci+++

  6. #6
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Regarde le lien que je t'avais donné dans ma première réponse

    Dans le cas d'un DELETE, ce n'est plus NEW mais ... (attention, suspense) OLD

    La prochaine fois : , c'est plus agréable à lire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] Continuer sur erreur dans trigger
    Par mail.spam dans le forum Développement
    Réponses: 6
    Dernier message: 06/12/2013, 09h56
  2. Erreur dans rêquete MySql création Trigger
    Par piscou51000 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/07/2010, 09h19
  3. Erreur dans mon trigger ?
    Par Metalyn dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/02/2008, 20h27
  4. [Trigger] Génération d'erreurs dans un trigger
    Par gilder89 dans le forum Développement
    Réponses: 5
    Dernier message: 10/04/2007, 12h02
  5. Gestion des erreurs dans un TRIGGER
    Par SDU64 dans le forum DB2
    Réponses: 1
    Dernier message: 18/05/2006, 09h51

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