Mysql数据库基础知识点(触发器)/四

什么是触发器

触发器(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:    表示建立触发器的表名,就是在哪张表上建立触发器

扫描二维码关注公众号,回复: 5859286 查看本文章

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个苹果,请更新商品表和订单表中的数据。
update g set num=num-3 where name='苹果';


-- 更新订单
insert into o(gid,much) values(1,3);

触发器使用 

练习2:使用触发器来完成练习1的效果。
把结束符改为$
delimiter $
create trigger trigger01 after update on g for each row
begin

改结束符就是为了下面的语句
insert into o(gid,much) values(1,3);
end $
把结束符改回分号
delimiter ;

当执行下面这句话时,会被触发器监听到同时触发insert into o(gid,much) values(1,3);这句话

update g set num=num-3 where name='苹果';

练习3:创建对任意商品改变的触发器

delimiter $
create trigger tg2 after insert on o for each row 
BEGIN

new代表下面语句对象(INSERT into o(gid,much) values(2,3);)
update g set num = num-new.much where id = new.gid;
END $
delimiter ;

下面语句执行时,上面语句执行
INSERT into o(gid,much) values(2,3);
drop trigger tg2;

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/89212193
今日推荐