MySQL 触发器
MySQL 中的触发器是一组位于系统目录中的 SQL 语句。它是一种特殊类型的存储过程,可自动调用以响应事件。每个触发器都与一个表相关联,该表在任何 DML 语句(如INSERT、UPDATE或DELETE )上激活。
触发器被称为特殊过程,因为它不能像存储过程一样直接调用。触发器和过程之间的主要区别在于,当针对表进行数据修改事件时,会自动调用触发器。相反,必须显式调用存储过程。
根据SQL标准,触发器通常有两种类型:行级触发器和语句级触发器。
- 行级触发器:它是一个触发器,它通过插入、更新或删除等触发语句为每一行激活。例如,如果一个表插入、更新或删除了多行,则会为受insert、update或delete 语句影响的每一行自动触发行触发器。
- 语句级触发器:它是一个触发器,无论插入、更新或删除多少行,都会为表上发生的每个事件触发一次。
注意:我们应该知道 MySQL 不支持语句级触发器。它仅提供对行级触发器的支持。
一、为什么我们需要在MySQL中使用触发器?
由于以下特性,我们需要使用 MySQL 中的触发器:
- 触发器帮助我们执行业务规则。
- 触发器可以帮助我们在插入或更新数据之前验证数据。
- 触发器帮助我们保留记录日志,例如在表中维护审计跟踪。
- SQL 触发器提供了另一种检查数据完整性的方法。
- 触发器提供了另一种运行计划任务的方法。
- 触发器提高了 SQL 查询的性能,因为它不需要在每次执行查询时都进行编译。
- 触发器减少了节省时间和精力的客户端代码。
- 触发器帮助我们在不同平台上扩展我们的应用程序。
- 触发器易于维护。
二、在 MySQL 中使用触发器的限制
- MySQL 触发器不允许使用所有验证;他们只提供扩展验证。例如,我们可以使用 NOT NULL、UNIQUE、CHECK 和 FOREIGN KEY 约束进行简单的验证。
- 触发器从客户端应用程序以不可见的方式调用和执行。因此,对数据库层发生的事情进行故障排除并不容易。
- 触发器可能会增加数据库服务器的开销。
三、MySQL 中的触发器类型?
我们可以以触发器的形式定义最多六种类型的动作或事件:
当我们使用不使用 INSERT、UPDATE 或 DELETE 查询的语句来更改表中的数据时,与该触发器关联的触发器将不会被调用。
四、触发器命名约定
命名约定是我们为给出适当的唯一名称而遵循的一组规则。它可以节省我们的时间来保持工作的组织性和可理解性。因此,我们必须为与表关联的每个触发器使用唯一的名称。但是,为不同的表定义相同的触发器名称是一种很好的做法。
应使用以下命名约定来命名MySQL中的触发器:
(BEFOR | AFTER) table_name (INSERT | UPDATE | DELETE)
触发器激活时间: BEFORE | AFTER
触发事件: INSERT | UPDATE| DELETE
五、如何在 MySQL 中创建触发器?
我们可以使用CREATE TRIGGER语句在 MySQL 中创建新触发器。下面是在 MySQL 中创建触发器的语法:
CREATE TRIGGER trigger_name
(AFTER | BEFORE) (INSERT | UPDATE | DELETE)
ON table_name FOR EACH ROW
BEGIN
--variable declarations
--trigger code
END;
热门文章
优秀文章