触发器简单实例讲解

来源:互联网 发布:算法设计与分析课件 编辑:程序博客网 时间:2024/06/06 04:09

触发器简单实例讲解

触发器(trigger):监视某种情况,并触发某种操作。

触发器创建语法四要素:

  • 监视地点(table)
  • 监视事件(insert/update/delete)
  • 触发时间(after/before)
  • 触发事件(insert/update/delete)

语法:

【示例】:

create trigger triggerNameafter/before insert/update/delete on 表名for each row   #这句话在mysql是固定的beginsql语句;end;

现以商品下单进行讲解:

  1. insert。
    对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。
  2. delete。
    对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。
  3. 创建表。
CREATE TABLE goods(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), num INT);CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT, goods_id INT, much INT);insert into goods(name,num) values('商品1',20),('商品2',30),('商品3',40);

下单操作

DELIMITER $$   CREATE TRIGGER `test`.`trigger_insert` AFTER INSERT ON orders   FOR EACH ROW    BEGIN     UPDATE goods SET num=num-new.much WHERE id=new.goods_id;   END$$DELIMITER ;

取消订单操作

DELIMITER $$   CREATE TRIGGER `test`.`trigger_delete` AFTER delete ON orders   FOR EACH ROW    BEGIN     update g set num = num + old.much where id = old.goods_id;   END$$DELIMITER ;
原创粉丝点击