数据库原理及应用课程的实验的一个知识点(创建mysql两表数据联动的触发器)

项目场景:

创建mysql两表数据联动的触发器


问题描述

提示:这里描述项目中遇到的问题:

触发器创建多次失败


原因分析:

提示:这里填写问题的分析:

1.基础知识不扎实,网上百度教程多不符合并且不细节


解决方案:

提示:我这里创建了销售列表和会员信息两张表,根据销售列表增加的数据来判断会员等级并触发修改:
vippeple———— 触发器名字;
AFTER ———— 触发时机 (BEFORE 或 AFTER)
FOR EACH ROW ——是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作;
insert ————触发事件(INSERT、UPDATE 或 DELETE)
declare V_1 int(10) ——定义一个变量int类型长度10 (这里必须先声明再定义)
SET—————— 给变量赋值查询结果,记得查询语句用括号包住
begin——and里面写判断内容
内容判断我使用的if ——then语句如果满足if则执行对应的then——每个if——then使用end if隔开
show TRIGGERS————最后查询触发器

CREATE TRIGGER `vippeple` AFTER INSERT ON `销售列表` FOR EACH ROW

BEGIN

declare V_1 int(10);

SET V_1 = (SELECT SUM(`销售列表`.`销售额`)  FROM 销售列表  GROUP BY `销售列表`.`会员信息_外键` 
HAVING `销售列表`.`会员信息_外键` = (SELECT  `销售列表`.`会员信息_外键`  FROM 销售列表  ORDER BY  `销售列表`.`订单编号`  DESC LIMIT 1));

IF V_1 >= 100 AND V_1 < 300 THEN
		UPDATE `会员信息` SET `会员信息`.`会员等级` = 2,`会员信息`.`折扣等级`= 9
		WHERE `会员信息`.`会员编号`= (SELECT  `销售列表`.`会员信息_外键`  FROM 销售列表  ORDER BY  `销售列表`.`订单编号`  DESC LIMIT 1);	
END IF;
IF V_1 >= 300 AND V_1 < 500 THEN 
		UPDATE `会员信息` SET `会员信息`.`会员等级` = 3,`会员信息`.`折扣等级`= 8
		WHERE `会员信息`.`会员编号`= (SELECT  `销售列表`.`会员信息_外键`  FROM 销售列表  ORDER BY  `销售列表`.`订单编号`  DESC LIMIT 1);
END IF;
IF V_1 >= 500 THEN 
		UPDATE `会员信息` SET `会员信息`.`会员等级` = 4,`会员信息`.`折扣等级`= 7
		WHERE `会员信息`.`会员编号`= (SELECT  `销售列表`.`会员信息_外键`  FROM 销售列表  ORDER BY  `销售列表`.`订单编号`  DESC LIMIT 1);
END IF;

END

show TRIGGERS


版权声明:本文为weixin_61606538原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。