事務的原則的實現

2021-09-26 09:56:09 字數 1828 閱讀 6818

事務原則

sql實現資料庫事務

jdbc實現事務管理

事務是以一種客觀、一致的方式,方式和運算元據庫中資料的程式單元
隔離級別 例項

start transaction;

update t_user set amount = amount + 100 where id = 1

update t_user set amount = amount - 100 where id = 2

commit;

start transaction;

selelct * from t_user

selelct * from t_user where id = 1

commit;

connection conn = getconnection();

conn.setautocommiti(true);

string plussql = "update t_user set amount = amount + 100 where id = ?";

preparedstatement plusps = conn.preparedstatement(plussql);

string minussql = "update t_user set amount = amount - 100 where id = ?";

preparedstatement minusps = conn.preparedstatement(minussql);

plusps.setstring(1,"1");

plusps.executeupdate();

minusps.setstring(1,"2");

minusps.executeupdate();

conn.commit(); // 此處執行打斷點,觀察效果

plusps.close();

minusps.close();

conn.close();

注意:for update 會將select語句加鎖,如果沒有加where條件或者條件沒有索引會加表鎖,因此這樣使用select * from t_user where id = 1 for update加的行級鎖。

connection conn = getconnection();

conn.setautocommiti(true);

string query = "select * from t_user where id = 1 for update";

preparedstatement ps

= conn.preparedstatement(query);

resultset rs = ps.executequery();

long amount = 0l;

while(rs.next())

string minussql = "update t_user set amount = ? where id = ?";

preparedstatement minusps = conn.preparedstatement(minussql);

minusps.setlong(1,amount - 100)

minusps.setstring(2,"1");

minusps.executeupdate();

conn.commit();

ps.close();

minusps.close();

conn.close();

事務ACID原則

資料庫事務 transaction 是訪問並可能操作各種資料項的乙個資料庫操作序列。事務必須滿足acid原則 即原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 原子性指事務是資料庫工作的最小單位,乙個事務中的所有操作要麼全部成功提...

事務的實現

在很早的以前,我們要實現乙個事務通常是基於sql的資料庫事務,一般的通過sql查詢語言來實現,如下所示,同時更新兩本書的 begin transaction update tb book set price 122 where ident current 1001 update tb book se...

事務模組設計原則

廢話不多說,直接開始正題。首先從事務的原則說起 原子性 表示組成乙個事務的多個資料庫操作是乙個不可分隔的原子單元,只有所有的操作執行成功,整個事務才提交,事務中任何乙個資料庫操作失敗,已經執行的任何操作都必須撤銷,讓資料庫返回到初始狀態 一致性 事務操作成功後,資料庫所處的狀態和它的業務規則是一致的...