zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    java文件下载
    java程序运行原理
    java io流(核心:读进来,写出去)
    oracle操作表和字段的sql复习
    深入理解C/S和B/S模式
    Windows PyCharm永久激活
    MacBook PyCharm永久激活
    百度云同同步盘 mac版
    SJW-遍历我的账户左侧导航页面(句柄切换)
    python-selenium无法调用浏览器的问题==
  • 原文地址:https://www.cnblogs.com/chenhuadan/p/7665806.html
Copyright © 2011-2022 走看看