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
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
Salut,
Plus d'infos : http://dev.mysql.com/doc/refman/5.0/...e-trigger.html
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 ;
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
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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE phase.code_phase = NEW.code_phase;
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.
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+++
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager