supsuccess(口气不小) 问得好,有占位标志哦!,有的话该怎么样?

解决方案 »

  1.   

    如果未使用为1,已使用为0
    begin tran
    update 座位表 set 占位标志 = 占位标志 - 1,@IsFree = 占位标志 
    where 座位 = 座位
    if @IsFree = 0 
        begin
        rollback
        raiserror 50999 '已使用了!'
        return -1
        end  
    commit
      

  2.   

    Chiff(~o~) 你有没有考虑过收银不成功时,而你在选择中已经设置了占位标志,怎么可以将占位标志设置回原来的值呢?或者如果在选择完成收银开始时突然发生停电,怎么办?
      

  3.   

    supsuccess(口气不小) 你能否讲清楚点,我不太明白
    我的座位状态FLAGS有三个状态:0表示为空座位,7表示为临时选择状态,2表示已经售出。
     即选择是由0变为7,而收银后将7变为2,但是就是担心收银时,发生意外,如断电或者执行收银失败时,座位的状态还是7,而不是变回原来的0
     要达到我这个目的,应该怎么办?
      

  4.   


    你可以把从一笔业务开始到一笔业务结束所有修改数据的语句放在一个事务里面。
    任何一个环节出错了,便rollback,这样就相当于什么都没修改一样。只有所有
    的改动都没问题,才执行commit永久提交
      

  5.   

    Chiff(~o~)你好, 这是两个过程,选择与收银,用户在选择时,与系统发生交互,在收银时也要发生交互。当作一个过程实现,就必须在收银后才执行这个过程,这样的,如果发生重位,才来提示用户,是不是晚了点。
      

  6.   

    如果你用的是oracle数据库就很好办了,用其中的sequence object
      

  7.   

    Chiff(~o~) 很感谢你的帮忙,但是我还是有问题,你帮我吧!”而且,在这个事务的最后加一条语句,就是把占位标志改为2.“
     这一句我不明白,你的意思是不是座位状态从2变为1再变为2再变为0
      

  8.   

    Chiff(~o~) 你的QQ号是多少,我们在QQ上商量好不好?
      

  9.   

    softlife(E无所有) 对不起,我不上QQ的。你可以发消息或邮件给我
    [email protected]