資料庫 事務

2021-09-28 23:44:52 字數 1538 閱讀 3375

不可再分,轉賬就是乙個原子性操作,所有步驟全部成功或者全部失敗

轉賬成功,雙方的金額會持久化的儲存到儲存裝置中(資料庫)

轉賬之前和轉賬之後,資料總量不變,例如:張三向李四轉賬 500,轉賬之前(張三1000,李四1000),轉賬之後(張三500,李四1500)

事務a和事務b保持隔離

步驟:

1 開啟事務

2 執行業務(此時是轉賬)

3 執行業務全部成功提交事務,否則回滾事務

-- 開啟事務語法: start transaction;

-- 提交事務語法: commit;

-- 回滾事務語法: rollback; 只有出現異常狀態(catch塊)才會執行回滾的操作

建立表

create table tb_account(

id int(11) auto_increment,

account_name varchar(30) not null,

account_balance int(11) ,

primary key (id)

)default charset=utf8mb4,engine=innodb;

insert into tb_account(account_name,account_balance)values('czq',1000),('jjm',1000);

使用事務來管理轉賬,好處一旦轉賬出現異常操作,立馬回滾

-- 讀未提交  讀未提交,顧名思義,就是乙個事務可以讀取另乙個未提交事務的資料。

-- 開始是 500 1500

-- set global transaction isolation level read uncommitted;

-- 讀已提交 讀提交,顧名思義,就是乙個事務要等另乙個事務提交後才能讀取資料。

-- set global transaction isolation level read committed;

-- 可重複提交 重複讀,就是在開始讀取資料(事務開啟)時,不再允許修改操作

-- 開始是 500 1500

set global transaction isolation level repeatable read;

-- 2 開啟事務

start transaction;

-- 3 執行轉賬

update tb_account set account_balance = account_balance-500 where id= 1;

-- 停電了

update tb_account set account_balance = account_balance+500 where id= 2;

-- 4 如果全部成功提交事務

commit;

開啟另乙個視窗

start transaction;

-- 執行select語句

select * from tb_account;

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...

資料庫 事務

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...

資料庫事務

這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...