MySQL触发器可以在数据库某些事件发生时自动执行预先定义好的代码。这些事件可以是INSERT、 UPDATE和DELETE语句,当这些语句执行时触发器会自动运行。
MySQL触发器可以在触发器中调用存储过程,实现更加复杂的数据操作。下面是一个使用MySQL触发器调用存储过程的示例:
DELIMITER $$
CREATE TRIGGER `update_employee_salary` AFTER UPDATE ON `employee`
FOR EACH ROW
BEGIN
IF NEW.`salary`OLD.`salary` THEN
CALL `update_salary_history`(OLD.`id`, OLD.`salary`, NEW.`salary`);
END IF;
END$$
DELIMITER ;
这段代码创建了一个名为“update_employee_salary”的触发器,当employee表中的工资信息发生变化时自动执行。这个触发器在每次更新employee表时都会执行一次。
触发器中的IF语句判断了新的工资和旧的工资是否相同。如果不同,就会调用一个名为“update_salary_history”的存储过程来更新工资历史记录表。存储过程的参数是旧的员工ID、旧的工资和新的工资。
通过这种方式,MySQL触发器可以自动调用存储过程来完成更加复杂的数据操作。这不仅可以提高数据库的效率,还可以减少人工操作的错误率。