<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沒有更新而致使兩表的...