MySQL——触发器

创建触发器:

创建的原型:

--具体实现:创建触发器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语句。

因此,我们不能像修改其他数据库对象(如表、视图、存储过程)一样修改触发器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值