close
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
全站熱搜