如何判断什么情况下roll back 什么情况下提交

解决方案 »

  1.   

    start transaction
    commit
      

  2.   

    CREATE PROCEDURE tfer_funds  
        (from_account int, to_account int, tfer_amount numeric(10,2))  
    BEGIN  
        START TRANSACTION;  
      
        UPDATE account_balance SET balance=balance-tfer_amount WHERE account_id=from_account;  
      
        UPDATE account_balance SET balance=balance+tfer_amount WHERE account_id=to_account;  
      
        COMMIT;  
    END;  参考:http://hideto.iteye.com/blog/195275
      

  3.   


    他会自动回滚吗,不用我写rollback?
      

  4.   


    他会自动回滚吗,不用我写rollback?
      

  5.   

    在发生异常或者没有完成预计的任务时rollback,如果一切都成功,则执行commit。
      

  6.   

    以前写的示例:    -- 如果通过各项验证,下面开始转账
        START TRANSACTION;                                   
                                        
        SAVEPOINT point1;                                    
        -- 从转账账户扣钱
        UPDATE tb_user_act
        SET balance = balance - iMoney
        WHERE userid = iFrom;
                                        
        -- 如果转账账户扣钱成功
        IF ( ROW_COUNT() = 1 ) THEN
            -- 向转入账户加钱
            UPDATE tb_user_act
            SET balance = balance + iMoney
            WHERE userid = iTo;
                                            
            IF ( ROW_COUNT() = 1 ) THEN
                COMMIT;
                SET error_code = 0;
            ELSE
                ROLLBACK TO SAVEPOINT point1;
                SET error_code = 9999;
            END IF;
        ELSE
            SET error_code = 9999;
        END IF;    
      

  7.   

    http://wwty.iteye.com/blog/698239
    推荐一篇帖子