Mysql学习历程(18)-触发器

触发器:trigger 事先为某张表绑定好一段代码  当表中某些内容发生改变的时候(增删改),系统会自动触发代码执行

事件类型(增删改) insert,delete,update

触发事件(before,after)

触发对象:表中每一条记录

最多一张表能有6个触发器;


创建触发器

mysql中没有大括号,都是用对应字符符号来替代;

触发器基本语法:

-- 临时修改语句结束符

delimiter  自定义符号   -- 后续代码只有碰到自定义符号才算结束

create trigger 触发器名字  触发时间    事件类型  on  表名   for each row

begin  --  代表左大括号:开始

-- 里面就是触发器内容 每行以语句结束符;

end   --  代表右大括号:结束

--  语句结束符

自定义符号

-- 将临时修正改过来

delimiter  ;

查看触发器或模糊匹配 show triggers  [ like 'pattern' ]

查看触发器创建语句  show create trigger 触发器名字;

 所有触发器都会保存在一张表中Information_schema.triggers


触发器不能修改,只能先删除后新增;

drop  trigger 触发器名字;

触发器记录:不管触发器是否被触发,只要当某种操作准备执行,系统就会将当前要操作的记录的当前状态和即将执行之后的新的状态给分别保留下来,供触发器使用

要操作的当前状态保存到old中,操作之后可能形态保存给new

old代表的是旧记录,new代表的是新记录;删除的时候是没有new的,插入的时候是没有old的;

old和new都是代表记录本身,任何一条记录除了数据还有字段名字,使用方式:old.字段名  /new.字段名;  new代表假设发生之后的结果


如果触发器内部只有一条要执行的SQL指令,可以省略大括号begin和end

delimiter $$
create trigger after_order after insert on t_order for each row 
begin
	update t_product set total :=total-new.amount where id=new.pid;
end 
	$$
delimiter  ;











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值