事物在資料的是使用方法

2021-10-06 13:13:52 字數 2495 閱讀 3544

事物就是被繫結在一起作為乙個邏輯工作的單位的sql語句組,如果任何乙個語句操作失敗那麼整個操作就失敗,進而回滾到操作前的狀態,或者是上乙個節點,為了確保要麼執行,要麼不執行,就可以使用事物,要將一組語句作為事物考慮,就需要通過acid測試,即源自性,隔離性和永續性

原子性(atomic)(atomicity)

事務必須是原子工作單元;對於其資料修改,要麼全都執行,要麼全都不執行。通常,與某個事務關聯的操作具有共同的目標,並且是相互依賴的。如果系統只執行這些操作的乙個子集,則可能會破壞事務的總體目標。原子性消除了系統處理操作子集的可能性。

一致性(consistent)(consistency)

事務在完成時,必須使所有的資料都保持一致狀態。在相關資料庫中,所有規則都必須應用於事務的修改,以保持所有資料的完整性。事務結束時,所有的內部資料結構(如 b 樹索引或雙向鍊錶)都必須是正確的。某些維護一致性的責任由應用程式開發人員承擔,他們必須確保應用程式已強制所有已知的完整性約束。例如,當開發用於轉帳的應用程式時,應避免在轉帳過程中任意移動小數點。

隔離性(insulation)(isolation)

由併發事務所作的修改必須與任何其它併發事務所作的修改隔離。事務檢視資料時資料所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視中間狀態的資料。這稱為隔離性,因為它能夠重新裝載起始資料,並且重播一系列事務,以使資料結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可並行執行的事務獲得的結果與通過連續執行每個事務所獲得的結果相同。由於高度隔離會限制可並行執行的事務數,所以一些應用程式降低隔離級別以換取更大的吞吐量。

永續性(duration)(durability)

事務完成之後,它對於系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持。

事物對於資料庫的作用是對資料的一系列操作,知要麼全部成功,要麼全部失敗,防止中間狀態的出現,以確保資料庫中的資料始終處於正確及和諧道狀態。

例如有一張銷售明細增加了一筆記錄,那麼彙總表就必須同時調整匯總數。現實的情況是當我們進行這兩項操作時,因為種種原因(例如網路突然中斷等)很可能回會發生第一項操作已經完成而第二項操作失敗的情況,如此一來資料庫中記載的資料就會不正確,如果這時使用「事務」技術我們就可以有效地避免這種情況的發生。資料庫系統會將已經完成的第一項操作取消,從而防止數答據庫中的資料處於不正確狀態。

–事物回滾

—比如a轉錢給b200

update moneyacouont set

year

=year

-200

where name=

'a'update moneyacouont set

year

=year

+200

where name=

'b'

select * from customer

go–建立乙個儲存過程

create

proc cp_changeaccount

(@idout

int,

@idin

int,

@remain

decimal(18

,2))

as

–定義乙個變數,記錄錯誤數

declare

@error_nums

intset

@error_nums

=0

–開始事物

begin

transaction tran_change

begin try

update customer set remain=remain-

(remanin-

@remain

)where id=

1set

@error_nums

=@error_nums

+@@error

update customer set remain=

(remain+

@remain

)where id=

@idin

set@error_nums

=@error_nums

+@@error

end try

begin catch

set@error_nums

=@error_nums+1

print

'錯誤異常'

+convert

( varcher, error_number())

+',錯誤訊息'

+error_message()if

(@error_nums

>0)

--表面有錯誤

rollback

transaction tran_change--回滾事物

else

commit

transaction tran_change--執行事物

Sql 事物 游標 使用方法

當兩個或兩以上的操作要麼都執行,要麼都不執行時要用事務。1.sql寫法 事物 游標 開始事務 begin tran 不顯示計數資訊 set nocount on declare projno varchar 50 cusno varchar 50 宣告游標 declare crmpscontact ...

Android學習筆記7 事物的使用方法

sqlitedatabase中事物的使用方法 1.獲得資料庫例項 2.開啟乙個事物,db.begintransaction 將要執行的內容放進事物中 3.設定乙個事物成功的標記 db.settransactionsuccessful 4.結束事物 db.endtransaction 事物的特點 要麼...

什麼是gulp?使用方法?

1.什麼是gulp?gulp是前端開發過程中一種基於流的 構建工具,是基於nodejs的自動任務執行器,是自動化專案的構建利器。2.gulp有什麼用途,到底有哪些強大的功能?它能自動化地完成前端 的測試 檢查 合併 壓縮 格式化 瀏覽器自動重新整理 部署檔案生成,並監聽檔案在改動後重複指定的這些步驟...