• MSSQL数据库事务处理


    在日常应用中通常需要多人执行多表的操作,比如售票系统的售票功能,这时候就涉及到数据读取的一致性问题,好在MSSQL数据库也提供了事务处理功能,这里就简单的记下

    语法:

    Begin Tran

    //事务处理语句

    if判断

    begin

    {

    RollBack tran

    }

    end

    else

    bein

    Commit tran

    end

    注:事务的begin没有end来配对

    下面以旅客购票来举例:Tickets表为车票余量表(id,remaining),剩余票数有一个约束不能小于0,UserTicket为旅客购票表(userid,quantity)

    假设当前剩余的票数为2,有两个旅客A、B同时操作购票,A要两张,B要1张

    A旅客购票语句:

    Insert into UserITicket values ('A',2)

    Update Tickets set(Remaining=remaining-2)

    B旅客购票语句:

    Insert into UserITicket values ('B',1)

    Update Tickets set(Remaining=remaining-1)

    显然B旅客更新车票余量表的时候会发生错误,提示与系统约束不一致问题,但是B旅客的购票记录会插入成功,这明显与现实不符。下面用事务来处理这个问题:

    Declare @error int=0--声明一个变量来捕获错误

    Begin tran--打开一个事务

    --执行事务

    Insert into UserITicket values ('B',1)

    set @error=@error+@@error--捕获错误代码

    Update Tickets set(Remaining=remaining-1)

    set @error=@error+@@error

    if(@error>0)--说明事务执行的时候发生了错误

    begin

    rollback tran--回滚事务,撤销之前的操作

    end

    else

    begin

    Commit tran--执行正常,确认之前的操作

    end

  • 相关阅读:
    Linq to Sql学习总结1
    SQL相关
    C#各种小知识点总结
    Ext.Net学习笔记
    ASP.NET MVC3入门学习总结
    leetcode-剑指67-OK
    leetcode-剑指44-OK
    leetcode-剑指51-OK
    leetcode-剑指32-III-OK
    leetcode-剑指49-OK
  • 原文地址:https://www.cnblogs.com/chenhuadan/p/7665806.html
Copyright © 2020-2023  润新知