用mysql创建触发器

liyuzhao8年前学习记录1496

学习创建触发器:

触发器的定义就是,当执行增删改查等操作就会触发执行sql语句。

 

先创建两个表:dongwu表和购买buy表,数据字典如下:

动物表:

Create table dongwu(

Dwid int not null  auto_increment,

Name varchar(30),

Num int(5) not null,

Primary key(dwid)

)

购买表:

Create table buy(

Bid int not null auto_increment,

Name varchar(30),

Buynum int(5) not null,

Primary key(bid)

)

 

插入几条动物的信息,

Insert into dongwu values(1,’laohu’,5);

Insert into dongwu values(1,’huli’,55);

 

创建触发器:

Delimite  $ //更变结束符号

 

create trigger test1

after //这里可以触发前和触发后都可以after/before

insert  //这里update/delete/insert/select

on buy      //监视的表

for each row //暂时不懂

begin

update dongwu set num=num-new.buynum where name=new.name; //绑定要触发的语句,new为插入时的buy表新增的一行记录

end$

 

在buy表插入数据测试,是否已经触发触发器。

Insert into buy values(1,’laohu’,2);

原本为5个数量,现在已经为3个。触发成功。还有另一种触发,就是删除数据的时候,dongwu表的数据变回来。

 

一个表只能有一种触发器,所以要删除这个test1才能再次建立触发器。

//这个不用删,因为是delete类型,不属于同一种。

Drop trigger test1;

 

新建新的触发器:

create trigger test1

after //这里可以触发前和触发后都可以after/before

delete  //这里update/delete/insert/select

on buy      //监视的表

for each row //暂时不懂

begin

update dongwu set num=num+old.buynum where name=old.name; //绑定要触发的语句,old为删除时的buy表新增的一行记录

end$

 

测试触发器:

Delete from buy where bid=1$

原本为数量为3,现在已经变为5,触发器触发成功。

 

New和old的使用关系:

Insert—>new   delete—>old   update—>用旧的数据就用old,更新后的数据为new


相关文章

centos7.4 安装lnmp

centos7.4 安装lnmp

最近购买了两天云服务器,所以环境需要重新配置下。采用php7.2+nginx+mysql5.7 .安装步骤:yum的安装?1yum updateyum安装nginx安装nginx最新源?12yum l...

探讨mysql的权限问题

不管是本地连接数据库还是远程连接数据库,要想连接成功必须要有四样:1:host   –>连接地址2:user  –>连接账号3:password  –>...

数据库实现1+到N得出总和的编程

数据库实现1+到N得出总和的编程

delimiter $    //这个是把结束符号变为$create procedure p1(N int)begindeclare total int default 0;dec...

centos7 下安装php扩展redis

最近一直在学习并发、tcp\ip协议等等,然后发现了redis很好用,就打算去实用一下,我打算实验一下,用redis查询15W条数据的时间,服务器的配置是:cpu:1核带宽:1M内存:1G废话不多说,...

探讨mysql编程形参的in,out,inout型

探讨mysql编程形参的in,out,inout型

mysql的形参可以传入数值,也可以传入变量,下面来探讨一下:先探讨in和out型:delimiter $create procedure p2(in a int , out b int)begind...

session和cookie原理透彻分析

一直以来对session和cookie这个两个的原来有点不明确。上次去公司面试的时候就有这个面试题,心里一直都想搞清楚这两个的原理,但是一直没有好的理解,所幸今晚翻了以前看十八哥的视频,非常透彻的讲解...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。