SQL SERVER 事務處理

2022-08-26 23:00:18 字數 3102 閱讀 6442

<1>.事務的概念

事務是乙個不可分割的工作邏輯單元。

<2>.為什麼使用事物

可以防止錯誤的發生。

<3>.事物的作用

要麼所有的操作全部完成,要麼所有操作都不執行。

<4>.什麼是事物

事務是單個的工作單元

如果某一事務成功,則在該事務中進行的所有的資料更改均會提交,稱為資料庫中的永久組成部分。

如果事務遇到錯誤且必須取消或回滾,則所有資料更改均被清楚。

<5>.事務的特性

事務必須具備以下四個屬性,簡稱acid 屬性:

(1).原子性(atomicity):事務是乙個完整的操作。事務的各步操作是不可分的(原子的);要麼都執行,要麼都不執行。

(2).一致性(consistency):當事務完成時,資料必須處於一致狀態。

(3).隔離性(isolation):對資料進行修改的所有併發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴於或影響其他事務。

(4).永久性(durability):事務完成後,它對資料庫的修改被永久保持,事務日誌能夠保持事務的永久性。

<6>.如何建立事務

1. t-sql使用下列語句來管理事務:

(1).開始事務:begin transaction

(2).提交事務:commit transaction

(3).回滾(撤銷)事務:rollback transaction

2.  一旦事務提交或回滾,則事務結束。

(1).判斷某條語句執行是否出錯:

(2).使用全域性變數@@error;

3).@@error只能判斷當前一條t-sql語句執行是否有錯,為了判斷事務中所有t-sql語句是否有錯,我們需要對錯誤進行累計;          

如:set @errorsum=@errorsum+@@error

<7>.事務的分類

(1).顯示事務:用begin transaction明確指定事務的開始,這是最常用的事務型別

(2).隱性事務:通過設定set implicit_transactions on 語句,將隱性事務模式設定為開啟,下乙個語句自動啟動乙個新事務。當該事務完成時,再              下乙個 t-sql 語句又將啟動乙個新事務

(3).自動提交事務:這是 sql server 的預設模式,它將每條單獨的 t-sql 語句視為乙個事務,如果成功執行,則自動提交;如果錯誤,則自動回滾。

<8>.建立事務的原則

建立事務時要遵守一下的原則:

(1).事務要盡可能的簡短

(2).在事務中訪問的資料量要盡量最少

(3).瀏覽資料是盡量不要開啟事務

(4).在事務處理期間不要請求使用者輸入

<9>.transact-sql中使用哪些語句管理事務?

開始事務:begin transaction

提交事務:commit transaction

回滾事務:rollback transaction

<10>.使用事務的注意事項

(1).在每個操作之後,都要檢查@@error或rowcount的值;

(2).當乙個事務結束之後,緊跟在事務之後的t-sql**可以繼續執行,但是出錯後不能再回滾事務了;

(3).已經提交完畢的事務會將資料正式寫入資料庫;

(4).在乙個事務執行時,如果發生如斷電等意外事件,則在下次重新啟動系統時,該事務會自動回滾;

(6).在事務裡發生錯誤是的事務無法執行下去,事務也會自動回滾;

(7).無法回滾的語句不能在事務中使用。

<11>.事務的工作原理

(1).在事務開始時,sqlserver會將要修改的資料鎖定,同時建立乙個臨時的事務日誌,在該臨時的事務日誌裡存放更改的資料和更改的儲存過程。

(2).在事務未提交之前,事務中所有的資料操作是臨時的,一旦發生資料操作失敗,就使用臨時日誌裡的資料去回滾事務操作,並解除鎖定。在事務              被成功提交後,資料庫就將臨時的事務日誌的內容儲存到資料庫中,此時事務操作完成。

<12>.事務的隔離級別

在sql server 中事務的隔離級別由低到高分為5個級別

(1).read uncommitted:不隔離資料

(2).read committed:不允許讀取沒有提交的資料

(3).repeatable read:在事務中鎖定所讀取的資料不讓別人修改和刪除。

(4).snashot:快照隔離,可以為讀取資料的事務提供所需資料的乙個已提交的版本。

(5).serializable:將事務所要用到的資料表全部鎖定,不與許其它事務新增、修改和刪除資料。

Oracle與SQL Server事務處理的比較

事務處理是所有大型資料庫產品的乙個關鍵疑問,各資料庫廠商都在這個方面花費了很大精力,不同的事務處理方式會導致資料庫效能和功能上的巨大差異。事務處理也是資料庫管理員與資料庫運用 程式開發人員必須深刻理解的乙個疑問,對這個疑問的疏忽可能會導致運用 程式邏輯不正確以及效率低下。下面我們針對oracle及s...

sqlserver中的事務處理

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server 能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。在 sql server net 開發環境下,有兩種方法能夠完成事務的操作...

簡單的SQL Server事務處理

相信大家在日常程式設計中,都會遇到同時更新或同時維護多個表的操作,為保持資料的一致性,sql server裡為我們提供很多便利方法,其中之一就是 事務處理 的辦法。事務處理?可以簡單例項化理解為 我們要同時更新表1 表2 不能因網路原因,在更新完表1後,由於斷電或網路故障導致表2沒有更新而致使兩表的...