1、sql事務sql
1.什麼是事務:事務是一個不可分割的工做邏輯單元,在數據庫系統上執行併發操做時事務是作爲最小的控制單元來使用的。數據庫
他包含的全部數據庫操做命令做爲一個總體一塊兒向系提交或撤消,這一組數據庫操做命令要麼都執行,要麼都不執行。併發
事務是一個不可分割的工做邏輯單元分佈式
2.事務的分類.
按事務的啓動與執行方式,能夠將事務分爲3類:
①顯示事務 :也稱之爲用戶定義或用戶指定的事務,便可以顯式地定義啓動和結束的事務。分佈式事務屬於顯示事務
②自動提交事務:默認事務管理模式。若是一個語句成功地完成,則提交該語句;若是遇到錯誤,則回滾該語句。
③隱性事務:當鏈接以此模式進行操做時,sql將在提交或回滾當前事務後自動啓動新事務。無須描述事務的開始,只需提交或回滾每一個事務。它生成連續的事務鏈。spa
3.事務的語句
開始事物:BEGIN TRANSACTION(簡寫tran)
提交事物:COMMIT TRANSACTION
回滾事務:ROLLBACK TRANSACTIONrest
注:一旦事務提交或回滾,則事務結束日誌
4.事務的4個特性
①原子性(Atomicity):事務中的全部元素做爲一個總體提交或回滾,是不可折分的,事務是一個完整的操做。
②一致性(Consistemcy):事物完成時,數據必須是一致的,也就是說,和事物開始以前,數據存儲中的數據處於一致狀態。保證數據的無損。
③隔離性(Isolation):對數據進行修改的多個事務是彼此隔離的。這代表事務必須是獨立的,不該該以任何方式來影響其餘事務。
④持久性(Durability):事務完成以後,它對於系統的影響是永久的,該修改即便出現系統故障也將一直保留,真實的修改了數據庫。code
5.實例blog
@@error:全局變量,記錄錯誤號,對錯誤進行累計事務
begin tran--開始事務 declare @errorsum int--定義變量記錄錯誤的數量 set @errorsum=0--錯誤數量默認爲0 update dbo.OfficeRent set CreateTime=GETDATE() where Id=2 --持續Sql語句 set @errorsum+=@@ERROR--累計是否有錯 update dbo.OfficeRent set Hits+=1 where Id=2 --持續Sql語句 set @errorsum+=@@ERROR--累計是否有錯 if @errorsum<>0--判斷是否出現錯誤的狀況 begin print '有錯誤,回滾' rollback tran--出現錯誤,回滾 end else begin print '成功,提交' commit tran--提交事務 end
6.如下操做不能用事務建立數據庫 create database修改數據庫 alter database刪除數據庫 drop database恢復數據庫 restore database加載數據庫 load database備份日誌文件 backup log恢復日誌文件 restore log更新統計數據 update statitics受權操做 grant複製事務日誌 dump tran磁盤初始化 disk init更新使用sp_configure後的系統配置 reconfigure