资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

问一个弱弱的问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

在表a中有一个状态值status  
  当用户在客户端修改这个表时status的值为修改,同时将这个表中的这一行锁定  
  在用户修改提交后将status值复原,同时解锁  
  同时在发生错误退出时,要将status的值复原,以及解锁  
  请问应该怎么实现,提供一点思路  
  谢谢哈

网友回答:

发表者:zjcxc

--参考:  
  --锁定记录,只允许单用户修改的例子:  
   
  --创建测试环境  
  --创建测试表--部门表  
  create   table   部门(departmentid   int,name   varchar(10))  
   
  --记录锁定表  
  create   table   lock(departmentid   int,dt   datetime)  
  go  
   
  --因为函数中不可以用getdate,所以用个视图,得到当前时间  
  create   view   v_getdate   as   select   dt=getdate()  
  go  
  --创建自定义函数,判断记录是否锁定  
  create   function   f_chk(@departmentid   int)  
  returns   bit  
  as  
  begin  
  declare   @re   bit,@dt   datetime  
  select   @dt=dt   from   v_getdate  
  if   exists(select   1   from   lock   where   departmentid=@departmentid  
  and   datediff(minute,dt,@dt)<5)     --锁的超时时间为5分钟  
  set   @re=1  
  else  
  set   @re=0  
  return(@re)  
  end  
  go  
   
  --数据处理测试,操作记录3  
  if   dbo.f_chk(3)=1  
  print   记录被锁定  
  else  
  begin  
  begin   tran  
  insert   into   lock   values(3,getdate())  
  update   部门   set   name=A   where   departmentid=3  
  delete   from   lock   where   departmentid=3  
  commit   tran  
  end  
   
  --删除测试环境  
  drop   table   部门  
  drop   view   v_getdate  
  drop   function   f_chk


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved