MySQL事務處理實現方法步驟

需求說明: 

案例背景:銀行的轉賬過程中,發生意外是在所難免。爲了避免意外而造成不必要的損失,使用事務處理的方式進行處理:

A賬戶現有餘額1000元,向餘額爲200的B賬戶進行轉賬500元。可能由於某原因: 

A賬戶在扣除轉賬金額時發生錯誤,使用事務回滾來返回到初始狀態

A賬戶成功扣除轉賬金額後,B賬戶添加轉賬金額發生錯誤,使用事務回滾到初始狀態

提示:先建數據表account,字段包括姓名(username)、餘額(money),再分別利用事務處理以上兩種情況。

#創建賬戶表
CREATE TABLE IF NOT EXISTS account(
  id INT(11)NOT NULL AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(32)NOT NULL,
  money DECIMAL(9,2)
)ENGINE=INNODB;
#插入用戶數據
INSERT INTO account(username,money)VALUES('A',1000.00);
INSERT INTO account(username,money)VALUES('B',200.00);

/*事務處理*/
#  A賬戶匯款失敗
SELECT * FROM account;
#第一步 關閉事務自動提交模式
SET autocommit=0;
#第二步 開始事務
START TRANSACTION;
#第三步 發現匯款失敗,將事務回滾ROLLBACK ||  匯款成功將事件commit
#假設語法錯誤
UPDATE account SET money=money-500 WHERE username='A';
SELECT * FROM account;
UPDATE account SET money=money+200 WHERE username='B';
ROLLBACK;
#第四步 還原Mysql數據庫的的自動提交
SET autocommit=1;
SELECT * FROM account;
 

/*B接收匯款失敗*/
SELECT *FROM account ;
SET autocommit =0;
START TRANSACTION;
UPDATE account SET money=money-500 WHERE username='A';
SELECT * FROM account ;
#假設語法錯誤
UPDATE account SET money=money+200 WHERE username ='B';
ROLLBACK;
SET autocommit =1;
SELECT * FROM account;

#清除數據
<pre name="code" class="sql">TRUNCATE account;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章