MariaDB TRIGGER 是一种与表关联的特殊类型的存储过程,当该表发生特定事件时会自动执行。触发器必须与永久表关联。它不能与临时表或视图关联。
触发器名称存在于数据库命名空间中,这意味着所有触发器在数据库中必须具有唯一的名称。不同数据库中的触发器可以具有相同的名称。
注意:触发器和过程之间的主要区别在于,当表发生特定事件时会自动调用触发器。相反,必须显式调用存储过程。创建触发器语句
MariaDB CREATE TRIGGER 语句用于创建触发器。 CREATE TRIGGER 需要与触发器关联的表的 TRIGGER 权限。
语法
在 MariaDB 中创建触发器的语法如下:
CREATE TRIGGER trigger_name
(AFTER | BEFORE) (INSERT | UPDATE | DELETE)
ON table_name FOR EACH ROW
BEGIN
-- 变量声明
-- 触发器代码
END;
以上语句创建一个名为trigger_name 的触发器,该触发器与名为table_name 的表关联。关键字AFTER或BEFORE表示触发动作时间。关键字 INSERT、UPDATE 或 DELETE 表示触发事件。 FOR EACH ROW 之后的语句定义触发器主体;
MariaDB 中的触发器类型
在 MariaDB 中触发器有六种类型:
触发类型 | 描述 |
---|---|
插入前触发器 | 在将数据插入表之前激活 |
插入后触发器 | 在将数据插入表之后激活 |
更新前触发器 | 表中数据更新前激活 |
更新后触发器 | 表中数据更新后激活 |
删除前触发器 | 从表中删除数据前激活 |
删除后触发器 | 从表中删除数据后激活 |
删除触发器语句
一旦在 MariaDB 中创建了触发器,就可以使用 DROP TRIGGER 语句将其删除。 DROP TRIGGER 语句需要与触发器关联的表的 TRIGGER 权限。如果删除表,表的触发器也会被删除。
语法
在 MariaDB 中删除触发器的语法如下:
DROP TRIGGER [IF EXISTS] [database.]trigger_name;
IF EXISTS 是一个可选参数,仅当触发器存在于数据库中时,它才会有条件地删除触发器。如果删除不存在的触发器,则会引发错误。
数据库名称是可选的。如果省略,触发器将从默认数据库中删除。上述语句删除名为 trigger_name 的触发器。
示例:
要从默认数据库中删除名为 sales_order_insert 的触发器,可以使用以下语句:
DROP TRIGGER sales_order_insert;