概述
一、介绍
1.概念:
触发器是指在表insert/update/delete之前或者之后,触发并执行触发器中定义的SQL语句结合。
2.作用
可以协助应用在数据库端保证数据的完整性,日志记录,数据校验等操作。
3.触发器中的变量
–new:代表即将要新增的数据,或者即将要更新的数据,或添加之后的数据。
–old:表示修改之前的旧数据,或者将要删除的数据。
4.触发器的类型
–insert型触发器
–update型触发器
–delete型触发器
二、创建触发器
语法结构:
create trigger trigger_name #trigger即触发器 trigger_name触发器名称
before/after insert/upate/delte #表示在增加,更新,删除操作之前或者之后执行该触发器
on 表名
[for each row] #表示行级触发器
begin
触发器要操作语句
end;
三、查看触发器
语法:
show triggers;
四、删除触发器
语法:
drop trigger 触发器名称;
/*
案例1:
一张水果仓库表,一张订单表。当生成一张订单时,假如订单某水果数量为10,那么水果仓库表对应的水果数量-10
*/
#创建水果表,并插入值
CREATE TABLE `fruit` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`f_name` varchar(255) DEFAULT NULL,
`f_count` int(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
#创建订单表,并插入值
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
#创建订单触发器
#表示一旦我插入一条订单记录,水果表中的水果数量减少
create trigger order_trigger
after insert
on orders
for each row
begin
#触发器执行的操作
update fruit
set f_count=f_count-new.count
#水果库存数量-订单要购买的数量 new.count表示orders表中中插入的数量
where f_name=new.name; #new.name 表示orders表中要购买的水果
end;
#查看触发器
show triggers;
#下单10个香蕉
insert into orders values (null,"香蕉",10);
/*
执行该语句时,同时执行了
update fruit
set f_count=f_count-10
where f_name="香蕉";
*/
/*
案例2:
去修改水果的库存时。要记录增加了哪个水果的数量,并且水果增加前的数量,增加了多少,增加后的数量。
*/
#创建日志记录表
CREATE TABLE `fruit_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`operate_fruit` varchar(255) DEFAULT NULL,
`old_count` int(255) DEFAULT NULL,
`add_count` int(255) DEFAULT NULL,
`new_count` int(255) DEFAULT NULL,
`operate_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
#创建更新触发器
#表示一旦去更新了水果的数量,就将向日志表中插入一条水果的更新记录
create trigger fruit_update
after update
on fruit
for each row
begin
insert into fruit_log values
(null,new.f_name,old.f_count,
(new.f_count-old.f_count),
new.f_count,
now());
end;
#此时,每当去更新水果数量,日志表中对应插入该水果的数量变化值
最后
以上就是香蕉薯片为你收集整理的MySQL——触发器(笔记8)的全部内容,希望文章能够帮你解决MySQL——触发器(笔记8)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复