zoukankan      html  css  js  c++  java
  • SQL ServerSQL事务处理(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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Java入门
    Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8
    pypy3.8安装
    asyncio执行阻塞代码
    linux安装go
    python消费rabbitmq
    绑定进程到指定cpu运行
    负载均衡算法
    django版本规划
    FastAPI WebSocket 简单演示
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2846757.html
Copyright © 2011-2022 走看看