创建触发器:
创建的原型:
--具体实现:创建触发器trigger_pro1,对student表进行插入操作之前触发,计数器@count加一
create trigger trigger_pro1
before
insert,load,replace
on student
for each row
begin
set @count = @count + 1;
end $
注意:一张表同一种触发器只能存在一个;一张表最多有六种触发器;
六种触发器:
查询触发器:
(1)在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中:
/data_folder/database_name/table_name.trg <终端命令,database_name:是数据库名称,table_name:是表名 >
show triggers [from/in database_name] [where/like 条件] ; <终端命令,查看当前数据库中的所有触发器,可以使用>
当执行show triggers语句时,MySQL返回以下内容:
Trigger:存储触发器的名称,例如before_employee_update触发器。
Event:指定事件,例如,调用触发器的INSERT,UPDATE或DELETE。
Table:指定触发器与例如相关联的表,如employees表。
Statement:存储调用触发器时要执行的语句或复合语句。
Timing:接受两个值:BEFORE和AFTER,它指定触发器的激活时间。
Created:在创建触发器时记录创建的时间。
sql_mode:指定触发器执行时的SQL模式。
Definer:记录创建触发器的帐户。
要允许上述语句,我们至少得拥有super权限。
(2)通过语句查询:<该语句允许您查看指定触发器的内容及其元数据>
select *
from information_schema.triggers
where trigger_schema = 'database_name' --database_name是数据库名称
AND trigger_name = 'trigger_name'; --trigger_name表示触发器名称
(3)要检索指定数据库中的所有触发器:<从information_schema
数据库中的triggers
表查询数据>
select *
from information_schema.triggers
where trigger_schema = 'database_name'; --database_name数据库名称
(4)要查找指定表相关联的所有触发器:
select *
from information_schema.triggers
where trigger_schema = 'database_name' --database_name数据库名
AND event_object_table = 'table_name'; --table_name表名
删除触发器:
关键字:drop triggers
drop trigger table_name.trigger_name; --table_name表名trigger_name触发器名称
修改触发器:
进行修改触发器,必须首先删除它并使用新的代码重新创建。因为在MySQL中没有类似于alter triggers
语句。
因此,我们不能像修改其他数据库对象(如表、视图、存储过程)一样修改触发器。