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