Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2011, 12h59   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 85
Points : 63
Points : 63
Par défaut Connaitre le trigger_event (INSERT/UPDATE/DELETE) dans le trigger ?

Bonjour, je souhaite mettre dans une table d'historique les actions (INSERT/UPDATE/DELETE).

J'ai donc fait 3 triggers de la sorte :
Code :
1
2
3
4
CREATE TRIGGER trigger_table_update AFTER UPDATE
    ON ma_table FOR EACH ROW 
INSERT INTO ma_table_log (champs1, champs2, date, methode) VALUES
(NEW.champs1, NEW.champs2, CURRENT_TIMESTAMP, trigger_event);
Sauf que dommage, "trigger_event" est recherché en temps que colonnes.
Je cherche la variable "trigger_event" au sein du trigger. Quelqu'un l'a t'il trouvé ?

Ceci permettant d'éviter de coder en dur :
Code :
1
2
3
4
CREATE TRIGGER trigger_table_update AFTER UPDATE
    ON ma_table FOR EACH ROW 
INSERT INTO ma_table_log (champs1, champs2, date, methode) VALUES
(NEW.champs1, NEW.champs2, CURRENT_TIMESTAMP, 'UPDATE');
sjachym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 13h39   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Euh... ton trigger est AFTER UPDATE donc il ne se déclenchera que sur un UPDATE !
Si tu veux faire le même genre de chose pour les insertions et les suppressions, il faut créer des triggers AFTER INSERT et AFTER DELETE.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 13h48   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 85
Points : 63
Points : 63
Oui, c'est ce que je disais sans citer les 3 exemples, mais j'ai fais 3 triggers :

Code :
1
2
3
CREATE TRIGGER trigger_table_insert AFTER INSERT ...
CREATE TRIGGER trigger_table_update AFTER UPDATE ...
CREATE TRIGGER trigger_table_delete AFTER DELETE ...
Mais j'aurais souhaiter connaitre le mode d'évènement du trigger (trigger_event) à l'intérieur de mes triggers du genre :
Code :
... CURRENT_TIMESTAMP, VARIABLE_MYSQL_trigger_event);
au lieu de coder dans chaque trigger la correspondance du trigger_event :
Code :
1
2
3
... CURRENT_TIMESTAMP, 'INSERT');
... CURRENT_TIMESTAMP, 'UPDATE');
... CURRENT_TIMESTAMP, 'DELETE');
sjachym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 13h50   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Puisqu'un trigger AFTER UPDATE ne se déclenchera que sur des UPDATE, qu'est-ce qui te pose problème à coder en dur 'UPDATE' dans la requête ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 14h53   #5
Membre du Club
 
Inscription : novembre 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 85
Points : 63
Points : 63
Un copier/coller non générique.
Tant pis je vais faire écrire mes 3 copier/coller...
sjachym est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h20.


 
 
 
 
Partenaires

Hébergement Web