数据库--(触发器概念,触发器使用方法)

触发器trigger

触发器(trigger):监视某种情况,并触发某种操作,它的执行是由事件来触发的,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)

触发器基本语法
创建触发器:
Create trigger trigger_name trigger_time trigger_event on tb_name for each row trigger_stmt;

trigger_time :触发器的触发事件,可以为before(在检查约束前触发)
或after(在检查约束后触发);

trigger_event:是触发器的触发事件,包括insert、update和delete;

tb_name: 表示建立触发器的表名,就是在哪张表上建立触发器

trigger_stmt: 触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句;

FOR EACH ROW:表示任何一条记录上的操作满足触发事件都会触发该触发器。

删除触发器:

Drop trigger 触发器名称。

练习:
– 创建商品表

create table g(
	id int primary key auto_increment,
	name varchar(20),
	num int
);

– 创建订单表

create table o(
	oid int primary key auto_increment,
	gid int,
	much int
);

– 插入商品
insert into g(name,num) values(‘苹果’,10),(‘香蕉’,10),(‘桔子’,10);

练习1: 卖了3个苹果,请更新商品表和订单表中的数据。
– 1.往订单表插入一条记录

insert into o(gid,much) values(1,3);

– 2.更新商品表商品1的剩余数量

update g set num=num-3 where id=1;

– 练习2:使用触发器来完成练习1的效果。
– 创建触发器
– 修改结束符

delimiter $-- 修改字符集
create trigger trigger01 after update on g for each ROW-- 创建触发器

BEGIN -- 开始
insert into o(gid,much) values(1,3);
END $-- 结束

delimiter ;

update g set num=num-3 where id=1;

练习3:创建对任意商品改变的触发器
扩展:
new 和old 的使用:
在这里插入图片描述NEW.columnname:新增行的某列数据
OLD.columnname:删除行的某列数据
代码:

delimiter $
create trigger tg2 after insert on o for each row 
BEGIN
update g set num = num-new.much where id = new.gid;
END $

delimiter ;

INSERT into o(gid,much) values(2,3);
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值