SQL事物用法【轉】

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   io   ar   資料   art   

SQL事務 一、事務概念    事務是一種機制、是一種操作序列,它包含了一組資料庫操作命令,這組命令要麼全部執行,要麼全部不執行。因此事務是一個不可分割的工作邏輯單元。在資料庫系統上執行並行作業時事務是作為最小的控制單元來使用的。這特別適用於多使用者同時操作的資料通訊系統。例如:訂票、銀行、保險公司以及證券交易系統等。 二、事務屬性事務4大屬性:1   原子性(Atomicity):事務是一個完整的操作。2   一致性(Consistency):當事務完成時,資料必須處於一致狀態。3   隔離性(Isolation):對資料進行修改的所有並發事務是彼此隔離的。4   持久性(Durability):事務完成後,它對於系統的影響是永久性的。 三、建立事務T-SQL中管理事務的語句:1 開始事務: begin transaction2 提交事務:commit transaction3 復原事務: rollback transaction 事務分類:1 明確交易:用begin transaction明確指定事務的開始。2 隱性事務:開啟隱性事務:set implicit_transactions on,當以隱性事務模式操作時,SQL Servler將在提交或復原事務後自動啟動新事務。無法描述事務的開始,只需要提交或復原事務。3 自動認可事務:SQL Server的預設模式,它將每條單獨的T-SQL語句視為一個事務。如果成功執行,則自動認可,否則復原。 樣本:張三轉800元到李四帳戶上。 use stuDBgo--建立帳戶表bank--if exists(select* from sysobjects where name=‘bank‘)    drop table bankcreate table bank(    customerName char(10),    --顧客姓名    currentMoney money        --當前餘額)go/*--添加約束,帳戶不能少於元--*/alter table bank add        constraint CK_currentMoney check(currentMoney>=1)/*--插入測試資料--*/insert into bank(customerName,currentMoney)select ‘張三‘,1000 unionselect ‘李四‘,1select * from bankgo/*--使用事務--*/use stuDBgo--恢複原來的資料--update bank set currentMoney=currentMoney-1000 where customerName=‘李‘set nocount on    --不顯示受影響的行數print ‘查看轉帳事務前的餘額‘select * from bankgo/*--開始事務--*/begin transactiondeclare @errorSum int    --定義變數,用於累計事務執行過程中的錯誤/*--轉帳--*/update bank set currentMoney=currentMoney-800 where customerName=‘張三‘set @[email protected][email protected]@error    --累計是否有錯誤update bank set currentMoney=currentMoney+800 where customerName=‘李四‘set @[email protected][email protected]@error --累計是否有錯誤print ‘查看轉帳事務過程中的餘額‘select * from bank/*--根據是否有錯誤,確定事務是提交還是復原--*/if @errorSum>0    begin        print ‘交易失敗,復原事務.‘        rollback transaction    endelse    begin        print ‘交易成功,提交事務,寫入硬碟,永久儲存!‘        commit transaction    endgoprint ‘查看轉帳後的餘額‘select * from bankgo

  本文來源於:http://blog.csdn.net/zerolsy/article/details/2123637

SQL事物用法【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.