MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

  • BEGIN 开始一个事务 或  start transaction;
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

 

2、直接用 SET 来改变 MySQL 的自动提交模式:

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

 

 

3.特性:

 

當start transaction 或begin; 下去開始事物時

update,insert 

當前的connection 用select 查都會是更新後的資料

但別的connection看到的是還沒更新前的資料

要等commit後才會真正更新

4.用途

 

一連串的sql語句,突然有一句失敗,全部都不會commit出去

為了確保所有語句執行成功

4.2

row lock

這筆row正在transaction的話

其他connection試途修改要等待他執行完才能修改(update)

 

5.情境

銀行

 

個人帳戶與銀行的帳戶

個人扣了1000但系統遇上不知明問題銀行沒扣

造成沒有balence

所以用transaction來交易確保一致性

你有扣到我也扣到交易才算完成

 

6.實用:

貨物數量用transaction  lock住

避免當

總數30

a connection 30-2;

b onnectoin 30-8  

最後只會變剩22

正確要

a connection 30-2;

b onnectoin 28-8;

7.

https://www.youtube.com/watch?v=woOppQWEflU

arrow
arrow
    全站熱搜

    學習程式 發表在 痞客邦 留言(0) 人氣()