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:將事務所要用到的數據表全部鎖定,不允許其他事務添加、修改和刪除數據。