@author: Tobin
@date: 2019/11/7 17:07:04
MySQL5中增加的。
触发器是根据条件自动执行语句。只支持DELETE,UPATE,INSERT。最好在一个数据库中使用唯一的触发器名。
触发器只支持每个表的每个事件,每个表最多支持6个。
-- 创建触发器
CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added';
-- 删除触发器
DROP TRIGGER newproduct;
-- 使用触发器
-- INSERT触发器
-- 引用一个NEW虚拟的表,访问被插入行,类比this指针
CREATE TRIGGER neworder AFTER INSERT ON orders
FOR EACH ROW SELECT NEW.order_num;
-- 通常将BEFORE用于数据验证和净化
-- DELETE 触发器
-- 引用一个OLD虚拟的表,访问被删除行,只读,不能更改
CREATE TRIGGER deleteorder BEFORE DELETE ON orders
FOR EACH ROW
BEGIN
INSERT INTO archive_orders(order_num, order_date, cust_id)
VALUES(OLD.order_num, OLD.order_date, OLD.cust_id);
END;
-- UPDATE触发器
-- BEFORE: NEW,AFTER: OLD
CREATE TRIGGER updatevendor BEFORE UPDATE ON vendors
FOR EACH ROW SET NEW.vend_state = Upper(NEW.vend_state);