写条SQL语句锁定一个表,怎样锁,这条语句具体什么时候会自动解锁谢谢,我用的是MS-SQL!(10分)

  • 主题发起人 主题发起人 gdcqs
  • 开始时间 开始时间
G

gdcqs

Unregistered / Unconfirmed
GUEST, unregistred user!
写条SQL语句锁定一个表,怎样锁,这条语句具体什么时候会自动解锁谢谢,
我用的是MS-SQL!
 
begin tran

select top 1 * from table holdlock


到事务结束,这张表才会放开。
 
事物开始时,不过这样做的效果不好。
SELECT * FROM Table WITH(UPDLOCK)
简单方法是加个字段 flag,但不十分可行
1 只读 0 可写

最好方法:
1.我认为仅仅通过事务处理是不能达到效果的,因为第一事务处理的原则是尽可能短尽可能
快,不能把所有的动作放在一个事务里面的,否则会造成其他用户的等待甚至死锁。
2.具体的实现过程是:在服务器端建立一个Socket服务,专门接收客户端发送的信息以确定
客户端是否联机。在客户端建立一个Socket,每隔3秒(可以为其他时间段)发送信息(比
如该客户端的操作员ID),若服务器在20秒(可以为其他)内没有接收到客户端的信息,则
可以认为该客户端已经脱机,则清除该客户端的所有锁定标记,其他客户端可以使用了。若
某一客户端要操作某一记录,则首先判断该记录是否又锁定标记,若没有,则加上自己的
锁定标记,然后操作,操作完成后,清除该记录的锁定标记。
(富翁 Headchen 比我的描述好)

 
多人接受答案了。
 
后退
顶部