项目场景:
创建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