My SQL Server →5事務處理
.事務的概念
事務機制將一組數據庫操作命令當作一個完整且獨立的操作序列,即一組命令要么全部執行成功,要么都執行失敗。
1.事務的作用:要么所有操作全部完成,要么所有操作全部不執行。
2.什么是事務
數據庫中的事務是一種機制,每個事務時一個獨立的工作單元,它包含了一組數據庫操作命令,且這組命令要么執行,要么都不執行,因此事務時一個不可分割的工作邏輯單元。
3. 事務的屬性:
①原子性:事務的各個元素是不可分的。
②一致性:事務完成時必須使所有的數據都保持一致。
③隔離性:對數據進行修改的所有并發事務時彼此隔離的。
④持久性:只要事務成功提交之后,就不能再次回滾到提交前的狀態。
·事務的使用
1.創建事務:
①開始事務:BEGIN TRANSACTION
②提交事務:COMMIT TRANSACTION
③回滾事務:ROLLBACK TRANSACTION
分類:
顯示事務:用begin transaction明確指定事務的開始,后續的T-SQL語句都是一個整體。
隱式事務:使用Set implicit_transaction on語句,將隱式事務設置為打開。
自動提交事務:是SQL Server d的默認模式,它將每條單獨的T-Sql語句視為一個事務,如果成功執行則自動提交,如果失敗,則自動回滾。
常用的是顯示事務,它明確指定事務開始的邊界。事務包含的語句越少越好,無關的語句不要放在事務里,如變量的聲明和賦值。
2.創建事務的原則:
①事務要盡可能的簡短。
②在事務中訪問的數據量要盡量最少。
③瀏覽數據時盡量不要打開事務。
④在事務處理期間盡量不要請求用戶輸入。
.在存儲過程中使用事務
1.使用事務的注意事項:
①在每個操作之后,都有檢查@@error 或 @@rowcount的值。
②當一個事務結束后,緊跟在事務之后的T-sql代碼還可以繼續執行,但是出錯后就不能再回滾事務了。
③已經提交完畢的事務將會將數據正式寫入數據庫。
④在一個事務正在執行時,如發生停電等意外,則再下次重啟系統是該事務會自動回滾。
⑤在事務例發生錯誤使得事務無法執行下去,事務也會自動回滾。
⑥無法回滾的語句不能再事務中使用。
例:
create database 創建數據庫
alter database 修改數據庫
drop database 刪除數據庫
.事務的隔離級別
①Read uncommitted:不隔離數據,即使事務正在使用的同時,其他事務也能同時修改或刪除該數據。
②Read committed:不允許讀取沒有提交的數據
③Repeatable Read:子事務中鎖定所讀取的數據不讓比人修改和刪除。
④Snapshot:快照隔離,可以為讀取數據的事務提供所需數據的一個已提交的版本,因此寫入數據的事務阻塞不會讀取數據的事務。
⑤Serializable:將事務所要用到的數據表全部鎖定,不允許其他事務添加、修改和刪除數據。
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com