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