En réponse à la demande de @Zxaos, étant donné que nous ne pouvons pas avoir d'opérateurs AND/OR pour les déclencheurs MySQL, en commençant par votre code, voici un exemple complet pour y parvenir.
1. Définir le déclencheur INSERT :
DELIMITER //
DROP TRIGGER IF EXISTS my_insert_trigger//
CREATE DEFINER=root@localhost TRIGGER my_insert_trigger
AFTER INSERT ON `table`
FOR EACH ROW
BEGIN
-- Appeler la procédure commune exécutée en cas d'INSERT ou de mise à jour sur `table`
-- NEW.id est un paramètre d'exemple passé à la procédure mais n'est pas nécessaire
-- si vous n'avez pas besoin de transmettre quoi que ce soit à votre procédure.
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
2. Définir le déclencheur UPDATE
DELIMITER //
DROP TRIGGER IF EXISTS my_update_trigger//
CREATE DEFINER=root@localhost TRIGGER my_update_trigger
AFTER UPDATE ON `table`
FOR EACH ROW
BEGIN
-- Appeler la procédure commune exécutée en cas d'INSERT ou de mise à jour sur `table`
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
3. Définir la PROCÉDURE commune utilisée par ces deux déclencheurs :
DELIMITER //
DROP PROCEDURE IF EXISTS procedure_to_run_processes_due_to_changes_on_table//
CREATE DEFINER=root@localhost PROCEDURE procedure_to_run_processes_due_to_changes_on_table(IN table_row_id VARCHAR(255))
READS SQL DATA
BEGIN
-- Écrivez votre code MySQL à exécuter lorsqu'une ligne `table` est insérée ou mise à jour ici
END//
DELIMITER ;
Vous remarquez que je veille à restaurer le délimiteur une fois que j'ai terminé de définir les déclencheurs et la procédure.