MySQL交易處理實現方法步驟

來源:互聯網
上載者:User

標籤: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;

備忘:

使用IF NOT EXISTS建立資料表的解釋

MySQL交易處理實現方法步驟

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.