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
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |