事務是由若干條t-sql指令組成的作為單個邏輯工作單元執行的一系列操作,這些操作作為乙個整體一起向系統提交,要麼全部執行完成,要麼全部撤銷
事務分為顯式事務,自動提交事務和隱式事務三種,重點為顯式事務
顯式事務和另外兩個事務不同的是顯式事務需要明確定義開始(begin transaction)和結束(commit transaction或rollback transaction)
事務必須具備四個屬性,分別是原子性,一致性,隔離性,永久性,簡稱acid屬性
例,用事務解決銀行轉賬問題:
begin transaction tran_bank (開始乙個事務)
declare @tran_error int (定義乙個變數用於記錄錯誤 )
set @tran_error=0
update bankinfo set currentmoney=currentmoney-1000
where customername='張三'
set @tran_error=@tran_error+@@error
update bankinfo set currentmoney=currentmoney+1000
where customername='李四'
set @tran_error=@tran_error+@@error
if @tran_error<>0 (用if判斷,如果錯誤不等於0則回滾事務取消交易,等於零則交易成功)
begin
rollback transaction
print'轉賬失敗,交易已取消!'
endelse
begin
commit transaction
print'交易成功!'
endgo
游標實際上是一種能從多條資料記錄的結果及中每次提取記錄的幾隻,有些應用程式不需要對查詢得到的整個記錄集進行訪問,而要其中的一行或者少量的幾行資料,或者希望對其進行處理時,就需要用到游標
游標的語法結構:
declare cursor_name 游標名
cursor [local | global] 全域性或區域性的
[forward only | scroll] 游標滾動方式
[read_only | scroll_locks | optimistic] 游標讀取方式
for select_statements 查詢語句
[for update [of column_name[,….n]]] 可更改字段
游標的使用,例:
declare bank_cursor 宣告游標
cursor scroll for select customername,currentmoney from bankinfo
open bank_cursor 開啟游標
declare @name varchar(10),@money money
fetch first from bank_cursor into @name,@money
while @@fetch_status=0 用while迴圈遍歷游標中的所有資料
begin
print @name+'的餘額為'+convert(varchar(10),@money)
fetch next from bank_cursor into @name,@money
endclose bank_cursor 關閉游標
deallocate bank_cursor 釋放游標
go
劍來的第五章事務與游標課程總結
在資料庫的實際運用中,有時候需要把包含有多個步驟的指令當作乙個整體來執行,這個整體要麼全部執行成功 要麼全部執行失敗,這就需要考慮事務 事務是乙個不可分割的工作邏輯單元,在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式。事務是恢復和併發控制的基本單位。事務應該具有4個屬性 原...
第五章總結
5.1選單 選單是windows應用程式視窗的乙個非常重要的組成部分,視窗的選單欄一般在標題欄下面。這個選單通常稱為 主選單 5.1.1建立和程式設計選單 選單用於sdi 單文件介面 或mdi 多文件介面 以及基於對話方塊的應用程式,在基於對話方塊的應用程式中新建 設計並編輯選單後,在該對話方塊的 ...
第五章總結
1事務特點 原子,隔離,一致,永久 轉帳測試 張三轉賬1000元給李四 我們可能會這樣這樣編寫語句 張三的帳戶少1000元,李四的帳戶多1000元 update bank set currentmoney currentmoney 1000 where customername 張三 update ...