19-mysql编程触发器

mysql编程

什么是触发器?

就是mysql中的一种“一触即发”的机器(机制)。其实只是预先定义好的一段代码。该段代码无需人工调用,而是会在‘预计’好的某个情形下自动执行。

通常就这几个情形:对某个数据表的增(或删或改)之前(或之后)。每个表可见只有6种情形。

触发器内部也跟存储过程或存储函数一样,属于“编程环境”。

触发器就是在数据库中预先设定好的用于在某个表上发生某个事件(增/删/改)的时候来完成某些任务的一种代码机制。现实中类似的例子就是银行金库的红外扫描入侵报警器。

触发器:不能返回数据;也不能有select语句;也没有参数,也不能调用,而是在触发的情况下自动调用(执行)。可以使用普通变量;可以使用流程控制结构;其实是“一段代码”而已,存储在数据库中。

创建触发器

create trigger 触发器名 触发时机 触发事件 on 表名 for each row 
begin
要执行的代码,语句块,编程环境,但这里也不能使用select语句。
end;
  • 触发器名:一个名字,在一个数据库中唯一;

  • 触发时机:表示是某个事件之前还是之后触发,只有两个可用值:before,after;

  • 触发事件:表示一个表上什么事件发生的时候会触发,只有3个可用值:insert,update,delete;

  • 要执行的代码:要执行的一条或多条语句(但不能有select语句),类似写存储函数中的语句,可以用begin和end以便写多条语句。

    • 其中,还可以使用两个特殊的关键字来代表特定含义:old代表触发该触发器的事件所操作的“原来行数据”(就是要执行update或delete的数据),new代表触发该触发器的事件所操作的“新行数据”(就是要insert的数据)。

    • old:代表旧的一条数据,在update或delete的时候有效。new:代表新插入的一条数据,在insert事件的时候有效。

    • 用此两者可以引用其中的字段以代表该行的该字段值,比如:

    • insert into trigger_test2 set n1=new.n1, amount=new.amount*2; 
      # 或:
      delete from trigger_test2 where n1=old.n1
      

示例:

在这里插入图片描述

删除触发器

drop trigger [if exists] 触发器名;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值