mysql 存储过程
Posted 贝尔塔猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 存储过程相关的知识,希望对你有一定的参考价值。
场景:用户余额变动时,更新(插入)到流水表,并且记录到日志表中,但这里是先插入日志,如果成功再进入下一步。
知识点:
1、不存在则更新,存在则插入;
2、事务回滚与提交、异常
3、语法学习
调试方式:CALL SP_UPDATE_OR_INSERT(3,1,"用户充值",‘10‘);
BEGIN DECLARE t_error int DEFAULT 0; DECLARE usercount int DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1; START TRANSACTION; #插入用户充值日志表 INSERT INTO user_balance_log(user_id,log_type,log_des,log_value) values (_user_id,_log_type,_log_des,_log_value); #代表日志表插入成功 IF ROW_COUNT() > 0 THEN #查找用户是否存在表中 SELECT COUNT(*) INTO usercount from user_balance where user_id = _user_id; #如果存在则更新,否则就插入 IF usercount > 0 THEN UPDATE user_balance SET user_money = user_money + _log_value WHERE user_id = _user_id; ELSE INSERT INTO user_balance(user_id,user_money) VALUES (_user_id,_log_value); END IF; END IF; #判断错误 if t_error = 1 THEN ROLLBACK; #回滚 ELSE COMMIT; #提交 END IF; END
以上是关于mysql 存储过程的主要内容,如果未能解决你的问题,请参考以下文章