Php-mysql的触发器(V客学院知识分享)



Php-mysql的触发器(V客学院知识分享)

 

第一部分:基本语法结构

 

CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.

{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。

{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insertupdatedelete的过程中触发。

ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。

FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。

<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。

 

 

 

第一:  CREATE TRIGGER <触发器名称>    建立触发器

 

第二:{ BEFORE | AFTER }              触发时间

 

 

第三:{ INSERT | UPDATE | DELETE }   触发的事件

 

 

第四:ON                             表名

 

 

第五: FOR EACH ROW                触发语句

 

 

 

begin

 

 

end

 

 

第二部分:实例分析讲解

 

 

实例一:当下订单之后把减库存

 

 

  产品表 product

 

  

  pro_id,pro_name,pro_price,pro_num,

 

   1       aaa        20       10

 

   2       bbb        30       12

 

 

   3       ccc        25       32

 

 

  4        ddd        21       10

  

 

  订单表 order

 

 

  order_id,pro_id,order_num

 

 

   1,        1        5

 

 

DROP TRIGGER IF EXISTS t_po;

CREATE TRIGGER  t_po

AFTER INSERT ON orderlist

FOR EACH ROW

begin

update product set pro_num=pro_num-new.order_num where pro_id=new.pro_id;

end;

 

实例二:当订单退回的时候恢复库存

 

 

 

 

 

DROP TRIGGER IF EXISTS t_po_d;

CREATE TRIGGER  t_po_d

AFTER DELETE ON orderlist

FOR EACH ROW

begin

update product set pro_num=pro_num+old.order_num where pro_id=old.pro_id;

end;

 

 

实例三:连环触发

 

 

SELECT * FROM bigclass;

SELECT * FROM smallclass;

SELECT * FROM product;

 

 

 

  

DROP TRIGGER IF EXISTS t_b_d;

CREATE TRIGGER  t_b_d

BEFORE DELETE ON bigclass

FOR EACH ROW

begin

 

delete from smallclass where BigClass_ID=old.BigClass_ID;

 

end;

 

 

 

DROP TRIGGER IF EXISTS t_s_d;

CREATE TRIGGER  t_s_d

BEFORE DELETE ON smallclass

FOR EACH ROW

begin

 

delete from product where SmallClass_ID=old.SmallClass_ID;

 

end;

 

 

本文通过语法结构分析了在项目中常用的触发器PHP开发、web前端、UI设计、VR开发专业培训机构-vIT学院版权所有,转载请注明出处,谢谢合作!)

 

猜你喜欢

转载自blog.csdn.net/guanshihua/article/details/78393769