J'essaie de configurer une série de déclencheurs d'historique pour collecter automatiquement l'historique d'une table donnée via des déclencheurs. Je veux utiliser des déclencheurs car cela garantit que je capture tous les changements, même si quelqu'un oublie de le sauvegarder dans l'application. Mon problème est que j'ai ce déclencheur.Enregistrement du USER_ID d'un utilisateur ayant supprimé un enregistrement avec un déclencheur dans MySQL
CREATE TRIGGER `db`.`delete_history_trigger` BEFORE DELETE ON `db`.`payments`
FOR EACH ROW BEGIN
INSERT INTO `payments_history` select *, 'delete', NOW(), USER() from `payments` where `PAYMENT_ID` = OLD.`PAYMENT_ID`;
END
//
Cette fois, tout en substance dans payments
payments_history
et remplit l'action qui a été effectuée, la date/heure de l'action a eu lieu, l'utilisateur MySQL qui a causé l'action à effectuer. Chaque utilisateur de mon application dispose d'un USER_ID
(qui provient du tableau users
) que je souhaite enregistrer. Pour les mises à jour, ce n'est pas un problème car USER_ID
est un des champs utilisés dans la requête update
. Cependant, dans delete il n'y a pas de données transmises et donc NEW n'est pas accessible car il n'y a rien là. Je ne peux pas penser à un bon moyen d'obtenir le USER_ID
à enregistrer dans la table d'historique sur les suppressions à court de faire une deuxième requête pour mettre à jour l'enregistrement. Je préfère ne pas utiliser cette solution car il est possible que quelqu'un d'autre oublie d'appeler la méthode pour mettre à jour l'enregistrement après une suppression et que les données seraient perdues.
Ainsi comme, SET @USER_ID =? –
baudtack