Đáp lại yêu cầu @Zxaos, vì chúng tôi không thể có toán tử VÀ / HOẶC cho trình kích hoạt MySQL, bắt đầu bằng mã của bạn, dưới đây là một ví dụ hoàn chỉnh để đạt được điều tương tự.
1. Xác định kích hoạt 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
-- 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. Xác định trình kích hoạt CẬP NHẬT
DELIMITER //
DROP TRIGGER IF EXISTS my_update_trigger//
CREATE DEFINER=root@localhost 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. Xác định QUY TRÌNH chung được sử dụng bởi cả hai trình kích hoạt này:
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
-- Write your MySQL code to perform when a `table` row is inserted or updated here
END//
DELIMITER ;
Bạn lưu ý rằng tôi chú ý khôi phục dấu phân cách khi tôi hoàn tất công việc xác định trình kích hoạt và quy trình.