数据的加锁问题(10分)

  • 主题发起人 主题发起人 zhengyue
  • 开始时间 开始时间
Z

zhengyue

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi与SQL7.0连接中,(通过ADO连接)
多用户系统,怎样实现数据的加锁问题.
比如在销售系统中,商品的数量不能为负,在多用户系统中需要对该条记录加锁,
请问怎样实现? 合适的话,请给出语句.
 
在SQL 中用触发器。
 
我取数据到桌面时能不能独占,怎样独占
 
数据库打开时设置为独占方式
 
数据库不能独占,因为其它人还在工作,
只能在我读取表中的一条记录之后,独占着一条记录
怎样实现?
 
sql本就是记录锁
 
sql是记录锁,但是我读取之后,sql 就不在独占该记录了,我要求读取之后独占,然后
根据读取数据经过运算,在修改表中的数据,这当中有一个时间差,我要求在这个时间差也是独占的
 
如果在三层结构中,根本就不能做到你所要求的加锁。可以用一个临时表,
在读取记录前,先检查临时表中是否存在该记录,若存在就说明其他用户
正在使用该记录,提示用户。若不存在,在临时表中增加该记录,在对该
记录操作完成后将临时表中该记录删除。
 
ado 里有有关锁得处理,乐观的,悲观的
 
临时表用多了有没有好处,每个客户端都创建一个临时表,多了是不是速度很慢。

我用到了很多临时表.
 
那象售票系统等其它应用系统, 是怎样实现的,
 
你的临时表建在数据服务上还是?
 
那象售票系统等其它应用系统, 是怎样实现的
 
修改时应放在一个事务中,在表的Update触发器中检查该字段是否已经为0,
如果是则事务回滚,如果大于0则可以修改。
 
三层结构中,我们一般使用的是无状态对象。也就是说在客户端是不知道服务器端的
变化的。如果使用事务处理,当然是一个办法。但这种机制保证在保存资料的一瞬间,如
果两个人同时修改同一条记录,另一个人动作比你快,这时你还能保存资料吗?
其实如果你站在用户的角度想想就会知道,任何人都不希望自己辛辛苦苦修改好的资
料到存档时才发现记录已经被别人修改或删除了。虽然发生这种现象的机率较小,但是在
一个有几十上百个用户的大型系统中,这种情况是普遍存在的。
大家请参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=1067965
 
同意楼上同志观点
 
多人接受答案了。
 
后退
顶部