From a9b69b0081bd64ead27484d49f2c4af637602636 Mon Sep 17 00:00:00 2001 From: CTGU-HW <1499086342@qq.com> Date: Thu, 2 Jul 2020 17:42:41 +0800 Subject: [PATCH] first commit --- T.sql | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 T.sql diff --git a/T.sql b/T.sql new file mode 100644 index 0000000..6661825 --- /dev/null +++ b/T.sql @@ -0,0 +1,69 @@ + +-- 第一个触发器 +drop TRIGGER if EXISTS updateOd; +create Trigger updateOd +after update +on orderdetails for each ROW +begin + declare done int default 0; + DECLARE dST VARCHAR(10); + DECLARE flag int DEFAULT 1; +-- 创建游标,并存储数据 + declare cur_test cursor for select deliveryStatus from orderdetails where orderNo = old.orderNo; +-- 游标中的内容执行完后将done设置为1 + declare continue handler for not found set done = 1; +-- 打开游标 + open cur_test; +-- 执行循环 + posLoop:loop +-- 判断是否结束循环 + IF done = 1 THEN + LEAVE posLoop; + END IF; +-- 取游标中的值 + FETCH cur_test into dST; + IF dST = '已配送' THEN + set @flag = 1; + ELSE + set @flag = 0; + END IF; + end loop; +-- 释放游标 + close cur_test; + IF @flag = 1 then + UPDATE orders SET orderStatus = '已处理' WHERE orderNo=old.orderNo; + end if; +end; + +set names utf8 ; +-- update orderdetails set deliveryStatus = '已配送' WHERE orderNo = '00000012020-07-02 16:31:15'; + + + +-- 第三个触发器 +drop TRIGGER if EXISTS updateUser; +create Trigger updateUser +after update +on orders for each ROW +begin + declare sm int default 0; + declare um varchar(10); + select sumMoney into sm from orders WHERE orderNo=old.orderNo; + select userNo into um from orders WHERE orderNo=old.orderNo; + update users set level = floor(sm/100) where users.userNo = um; +end; + + +-- 第一个触发器 +drop TRIGGER if EXISTS updateDBL; +create Trigger updateDBL +after update +on distributionlist for each ROW +begin + IF new.deliveryStatus = '已完成配送' THEN + update orderdetails SET deliveryStatus = '已配送' where orderNo = old.orderNo; + END IF; +end; + +-- 这里测试的时候需要修改orderNo的实时订单号 +update distributionlist set deliveryStatus = '已完成配送' WHERE orderNo = '00000012020-07-02 16:53:29';