手動開啟事務和事務的ACID特徵與使用

2021-10-01 13:14:28 字數 1567 閱讀 6564

事務預設提交被開啟(@@autocommit=1)後,此時不能使用事務回滾,但我們可手動開啟乙個事務處理事件,這樣就可以發生回滾。

使用begin 或者star transaction 手動開啟乙個事務

begin;

update

user

set money=money-

100where name=

'a';

update

user

set money=money+

100where

name=

'b';

由於手動開啟事務沒開啟自動提交

此時發生變化的資料仍然是儲存在乙個臨時資料表中;

select

*from

user;+

----+------+-------+

| id | name | money |

+----+------+-------+|1

| a |

900||2

| b |

1100|+

----+------+-------+

測試回滾

rollback

;select

*from

user;+

----+------+-------+

| id | name | money |

+----+------+-------+|1

| a |

1000||

2| b |

1000|+

----+------+-------+

仍然用commit提交資料,提交後無法再發生本次事務的回滾。

begin

;update

user

set money=money-

100where name=

'a';

update

user

set money=money+

100where name=

'b';

select

*from

user;+

----+------+-------+

| id | name | money |

+----+------+-------+|1

| a |

900||2

| b |

1100|+

----+------+-------+

提交資料

commit

;測試回滾(無效,因為表的資料已經被提交)

rollback

;

事務四大特徵

a 原子性:要求事務是最小單位不可再分割;

c 一致性:要求同一事務中的sql語句,必須保證同時成功或者失敗;

i隔離性:事務1 和 事務2 之間是具有隔離性的;

d永續性:事務一旦結束(commit),就不能再返回(rollback)。

MySQL開啟事務

什麼是事務?事務是邏輯上的一組操作,組成這組操作的各個單元,要不全都成功要不全都失敗,這個特性就是事務 注意 mysql資料支援事務,但是要求必須是innodb儲存引擎 解決這個問題 mysql的事務解決這個問題,因為mysql的事務特性,要求這組操作,要不全都成功,要不全都失敗,這樣就避免了某個操...

NodeJs mysql 開啟事務

如題 node後台使用mysql資料庫,並使用事務來管理資料庫操作。這裡主要講乙個事務的封裝並寫了乙個insert 插入操作。code db.config.js const mysql require mysql const pool mysql.createpool 返回乙個promise鏈結 c...

MVC開啟事務方法

引言 其實事務在資料層 服務層 業務邏輯層多處地方都會使用到,在本篇文章將會為大家一一細說。其中前面四節是事務的基礎,後面的三節是事務的重點,對事務有基礎的朋友可以跳過前面四節。文章有錯漏的地方歡迎各位點評。一 事務的定義 所謂事務,它是乙個操作集合,這些操作要麼都執行,要麼都不執行,它是乙個不可分...