在資料庫的實際運用中,有時候需要把包含有多個步驟的指令當作乙個整體來執行,這個整體要麼全部執行成功
要麼全部執行失敗,這就需要考慮事務
事務是乙個不可分割的工作邏輯單元,在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式。
事務是恢復和併發控制的基本單位。事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為acid特性。
原子性(atomicity)。乙個事務是乙個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。乙個事務的執行不能被其他事務干擾。即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
永續性(durability)。持續性也稱永久性(permanence),指乙個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
顯式事務:t-sql標明,由begin transaction開啟事務開始,由commit transaction 提交事務、rollback transaction 回滾事務結束。
隱式事務:使用set implicit_transactions on 將將隱式事務模式開啟,不用begin transaction開啟事務,當乙個事務結束,這個模式會自動啟用下乙個事務,只用commit transaction 提交事務、rollback transaction 回滾事務即可。
1.自動提交事務:每執行一條sql語句,就同步到資料庫中。
2.手動提交事務:執行一系列的sql語句後一起同步到資料庫中。
我們知道,關聯式資料庫所有的關係運算其實是集合與集合的運算,它的輸入是集合輸出同樣是集合,有時需要對結果集逐行進行處理,這時就需要用到游標。我們對游標的使用一本遵循「五步法」:宣告游標—>開啟游標—>讀取資料—>關閉游標—>刪除游標。以下就從這五步對游標的使用進行說明,並給出具體例項。
--1.宣告游標
declare cur
cursor scroll
for select customername,currentmoney from bank
--2.開啟該游標
open cur
--3.讀取游標
--先定義變數,用於存放游標中讀取出來的值
declare @name varchar(10),
@money money
--讀取游標的第一條記錄行,並存放在變數中
fetch first from cur into @name,@money
--迴圈讀取游標中的記錄
while @@fetch_status=0
begin
--用print輸出讀取的資料
print @name+'的餘額為'+convert(varchar(10),@money)
--讀取下一條記錄行
fetch next from cur into @name,@money
end--讀取完成後關閉游標
close cur
--釋放游標
deallocate cur
第五章 事務和游標 總結
事務是由若干條t sql指令組成的作為單個邏輯工作單元執行的一系列操作,這些操作作為乙個整體一起向系統提交,要麼全部執行完成,要麼全部撤銷 事務分為顯式事務,自動提交事務和隱式事務三種,重點為顯式事務 顯式事務和另外兩個事務不同的是顯式事務需要明確定義開始 begin transaction 和結束...
第五章 Spring的事務管理
5.2宣告式事務管 spring的事務管理可以通過兩種方式來實現,一種是基於xml的方式,另一種是基於annotation的方式。5.2.1基於xml方式的宣告式事務 在eclipse中,建立乙個名為test1008的web專案,在專案的lib目錄下匯入chapter04專案中的所有jar包,並將a...
第五章 簡單的資料查詢 總結
資料庫的查詢操作基本分為三類 投影操作,選擇操作,排序操作 查詢的基本結構 select from 表名 where 過濾條件 投影操作 select 列名列表 from 表名 列名列表幾種書寫方式 如果選擇某個表中的多個列,那麼列名之間用逗號隔開 如果是單個列,只需要該列的列名即可 如果選擇所有的...