码迷,mamicode.com
首页 > 数据库 > 详细

mysql 存储过程

时间:2016-06-11 00:34:00      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

场景:用户余额变动时,更新(插入)到流水表,并且记录到日志表中,但这里是先插入日志,如果成功再进入下一步。

知识点:

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 存储过程

标签:

原文地址:http://www.cnblogs.com/CyLee/p/5574470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!