📜  MySQL触发器(1)

📅  最后修改于: 2023-12-03 14:44:32.144000             🧑  作者: Mango

MySQL触发器

MySQL是一个流行的关系型数据库管理系统,它支持触发器,这是一种在特定的数据库操作发生时自动执行的程序。触发器可以用来验证数据、生成计算字段、记录历史数据等等。

什么是触发器

触发器是MySQL中的一种特殊的存储过程,它不需要显式调用即可在特定情况下自动运行。触发器可以在以下事件发生时被激活:

  • 插入数据到表中
  • 修改表中的数据
  • 删除表中的数据

触发器的代码是在MySQL服务器上运行的,因此它可以进行复杂的计算和逻辑判断,并且可以访问表上的数据。

创建触发器

在MySQL中创建触发器需要遵循一定的语法规则。以下是一个简单的示例:

CREATE TRIGGER `trigger_name` AFTER INSERT ON `table_name`
FOR EACH ROW BEGIN
    -- trigger body
END;

触发器名称(trigger_name)必须在数据库中是唯一的。触发器的其他属性包括:

  • 触发器事件(AFTER INSERTAFTER UPDATEAFTER DELETE
  • 触发器作用域(FOR EACH ROWFOR EACH STATEMENT
  • 触发器条件(使用WHEN语句)

触发器主体(trigger body)是实际的代码,可以包含多条SQL语句。在触发器主体中可以使用OLDNEW引用旧数据和新数据,例如:

CREATE TRIGGER `update_salary` AFTER UPDATE ON `employee_table`
FOR EACH ROW BEGIN
    IF NEW.salary != OLD.salary THEN
        INSERT INTO `salary_history` (employee_id, old_salary, new_salary)
        VALUES(OLD.id, OLD.salary, NEW.salary);
    END IF;
END;
管理触发器

在MySQL中,可以使用DROP TRIGGER语句来删除一个触发器:

DROP TRIGGER `trigger_name`;

可以使用SHOW TRIGGERS语句来列出数据库中的所有触发器:

SHOW TRIGGERS;

对于每个触发器,这个命令列出其名称、事件、表名和创建时间等信息。

总结

触发器是MySQL中非常有用的功能,它可以让程序员轻松地验证数据、实现计算字段、记录历史数据等等。它需要遵循一定的语法规则来创建,并且可以使用DROP TRIGGERSHOW TRIGGERS等命令来管理。