MySql触发器

(一)、触发器的语法:

CREATE TRIGGER 触发器名

after / before (触时间)

insert / update / delete (触发条件)

ON

表名

FOR EACH ROW

BEGIN

触发事件

END;

(二)、触发器实验:

第一个触发器:

当用户购买商品时(也就是订单表增加订单数据时),商品表的该商品会自动减去用户购买的数量。

CREATE TRIGGER addOrder BEFORE insert ON ord FOR EACH ROW BEGIN

DECLARE goodsNum int;

select number into goodsNum from goods where gid=new.gid;

IF new.much > goodsNum THEN set new.much = goodsNum;

END IF;

IF new.much < 0 THEN set new.much = 0;

END IF;

update goods set number = number - new.much where gid = new.gid;

END;

第二个触发器:

当用户删除订单时,商品表的该商品会自动增加用户删除的订单数量。

CREATE TRIGGER delOrder before delete ON ord FOR EACH ROW

BEGIN

update goods set number = number + old.much where gid = old.gid;

END;

第三个触发器:

当用户修改订单数量时,商品表的该商品会自动减去或增加数量。

CREATE TRIGGER upOrder before update ON ord FOR EACH ROW

BEGIN

DECLARE goodsCount INT;

SELECT number INTO goodsCount FROM goods WHERE gid = new.gid;

IF new.much > goodsCount THEN set new.much = goodsCount;

END IF;

IF

new.much < 0 THEN set new.much = 0;

END IF;

update goods set number = number+old.much-new.much where gid=new.gid;

END;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,...
    金星show阅读 843评论 0 3
  • 1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器...
    Keropok阅读 342评论 0 1
  • 一,触发器 1.创建触发器 在MySQL中,创建触发器语法如下: 代码如下: CREATE TRIGGER tri...
    君满楼001阅读 1,715评论 0 0
  • 1. 破窗效应:作为管理者,对待店面每一位员工都要做到人人平等,出现问题进行考核,不要犹豫,否则以后类似事件,无法...
    Ding欣欣阅读 256评论 0 0
  • 放开自己,拥抱未来,拥抱变化。舍弃过往,接受新颖的架构,思想,理念。你就会发现,很短的时候,自己有了质地提升。 g...
    _士心_阅读 649评论 0 1