In risposta alla richiesta @Zxaos, dal momento che non possiamo avere e/o operatori per MySQL trigger, partire con la vostra codice, di seguito è un esempio completo per ottenere lo stesso.
1. Definire il trigger INSERT:
DELIMITER //
DROP TRIGGER IF EXISTS my_insert_trigger//
CREATE [email protected] TRIGGER my_insert_trigger
AFTER INSERT ON `table`
FOR EACH ROW
BEGIN
-- Call the common procedure ran if there is an INSERT or UPDATE on `table`
-- NEW.id is an example parameter passed to the procedure but is not required
-- if you do not need to pass anything to your procedure.
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
2. Definire il trigger UPDATE
DELIMITER //
DROP TRIGGER IF EXISTS my_update_trigger//
CREATE [email protected] TRIGGER my_update_trigger
AFTER UPDATE ON `table`
FOR EACH ROW
BEGIN
-- Call the common procedure ran if there is an INSERT or UPDATE on `table`
CALL procedure_to_run_processes_due_to_changes_on_table(NEW.id);
END//
DELIMITER ;
3. definire la procedura comune utilizzato da entrambi questi fattori scatenanti:
Si noti che mi occupo di ripristinare il delimitatore quando ho terminato la mia attività definendo i trigger e la procedura.
fonte
2014-08-30 18:38:03
questa è una buona idea. Non avevo pensato di usare anche una procedura. –
Potresti dare un esempio di questo per quelli di noi che non hanno familiarità con la sintassi? – Zxaos
@Zxaos: Suggerirei di iniziare con http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html (che include alcuni esempi) e di porre le tue domande se necessario. – derobert