【前言】最近有一个需求,店铺积分统计,每生成一条积分消费(赠送)日志记录,对应的店铺增加对应的剩余总积分和消费总积分,想了想觉得 mysql 触发器不错,然后尝试写了一个。注意,触发器基于诸多原因,请慎用或不用。
至于相关原因,请自行百度 触发器的弊端。
1. 表结构准备
表1 日志表
字段1 ID
字段2 使用类型(1增加2消费)
字段3 积分数
字段4 店铺ID
字段5 时间戳
score_log
id
score_type
score_num
shop_id
create_at
表2 店铺积分总表
字段1 ID
字段2 店铺ID
字段3 店铺剩余可用积分
字段4 店铺已消费总积分
shop_score
id
shop_id
left_score
use_score
2. 需求说明
的每生成一条 score_log 日志记录
1)如果 shop_score 中存在shop_id 为新score_log 日志中的shop_id 那接下来更新
如果不存在 则先插入一条 shop_id 为新score_log 日志中的shop_id 其他值为0 的初始记录 然后再更新
2) 更新规则
1> score_log 中 使用为消费类型 score_type = 2
shop_score 中 left_score = left_score - score_log.score_num
use_score