SQL Server-SQL事務處理(Stransaction)


ylbtech-SQL Server:SQL Server-SQL事務處理(Stransaction)

 SQL Server中的SQL事務處理(Stransaction)。

1,SQL事務處理(Stransaction)
-- ==============================================
-- title:事務處理
-- author:ylbtech
-- pubdate:22:24 2012/12/24
-- ==============================================
go
-- ==============================================
-- 1,事務概述
-- desc:事務是一些列的任務組的邏輯工作單元格,這個邏輯單元中的所有任務必須作為一個整體
-- 要么都完成要么都失敗。
-- ==============================================
go
-- ==============================================
-- 2,事務的特性
-- desc:事務是作為單個邏輯工作單元格執行的一系列工作。一個邏輯工作單元必須有以下4個屬性
-- 才能成為一個事務。
-- a)原子性
-- b)一致性
-- c)隔離性
-- d)持久性
-- ==============================================
go
-- ==============================================
-- 3,
-- VINET下了一個訂單,一共買了兩件商品。因此,要在Orders(訂單表)和OrderDetails(訂單明細表)
-- 里添加一條訂單記錄和兩條訂單明細記錄。如果添加失敗,訂單無效。
-- ==============================================
go

use Northwind
go
Begin Tran --開始事務【Tran也是Transaction縮寫】
Declare @orderId int
--添加一個訂單
Insert into Orders(CustomerID,EmployeeID,OrderDate,ShipName,ShipAddress
    ,ShipCity,ShipRegion,ShipPostalCode,ShipCountry)
    values('VINET',2,GETDATE(),'Rain','AnZhenLi'
    ,'Peking','North China','100000','China')
If @@ERROR>0
GoTo TranRollback    --跳轉到滾回標簽處
Set @orderId=@@IDENTITY

--添加兩個訂單詳細
Insert into [Order Details](OrderID,ProductID,UnitPrice,Quantity,Discount)
    values(@orderId,51,$200,1,0)
If @@ERROR>0
GoTo TranRollback
Insert into [Order Details](OrderID,ProductID,UnitPrice,Quantity,Discount)
    values(@orderId,14,$200,1,0)
If @@ERROR>0
GoTo TranRollback

TranRollback:
If @@ERROR>0 Or @@ROWCOUNT<>1
    Rollback Tran    --如果發生錯誤則滾回事務
Else
    Commit Tran        --如果沒有發生錯誤則提交事務
Go

select * from Orders

 

warn 作者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM