那就用事务更改所有表,保持wait状态,等你想结束的时候在回滚所有事务

解决方案 »

  1.   

    begin tran
       --add,edit,remove等操作
    if @@error=0
       commit
    else 
       rollback
      

  2.   

    楼上各位说的我还有点一知半解,用事务更改所有表,怎么处理,要给表加特殊字段吗,还有第三位说的代码还是看不太懂地说,需要进入特殊库玛,我是用java开发的,因为对多线程操作没有以前没有任何经验,所以能否说的详细些呢?
      

  3.   

    看看这个,估计对你有用!!!!
    http://hi.baidu.com/windy8848/blog/item/0c0ecc3def7c81c19f3d62a5.html
      

  4.   

    加一表.
    currentClientOnline
    (id int,
    clientIP varchar(50),
    mac varchar(5),
    isOnline bit,
    activeTime datetime not null default getdate()
    )
    记录当前clint连接的时间,ip,在线等信息。
    在当前client断开时,将isOnline设置为否新的client连接时,查询此表中是否存在一条 isOnline=1的记录,如果存在,则检测这条记录的ip是否当前client的ip,如果是,则允许使用,如果不是则不允许使用。
    如果不存在一条 isOnline=1的记录,则允许当前client使用,并增加一条记录,记录当前client的信息,并置 isOnline状态为true.在对这个表操作时加上事务处理。当然,如果client的ip可能是动态的,那么意外断线时,可能造成表中会有一条在线为true的记录,而掉线的client连不上,其它的client也连不上。 那么可以用mac代替ip. 
    或者, 在client中操作时,定时更新当前记录的 activeTime.服务器上启动job, 删除在线超时的记录,比如某个client在20.50连上去,client端 程序,每3分钟更新此记录activeTime为当前时间,假设 21.21 它更新了activetime.在 21.23,
    这个client掉线了,那么它是意外掉线,应该允许它能再次连上服务器执行未完成的工作,此时其它client不能上去。那么从它掉线起10分钟留做它重新连接时间,job中设置 delete from currentClientOnlie WHERE datediff(mi,activeTime,getdate())>10 and isOnline = 1
    即,如果超过10分钟它还没连上,就认为它连不上了,就删除这条记录,或者update其isOnline=0,  就把资源放出来,给其它client使用。如果10分钟内它连上了,则job还没释放资源时,client端 程序又定时刷 actiteTime,则保证了其掉线重连后资源继续使用。