T tsaietsai Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #1 我正在用delphi+ado+sql做一个多用户程序,但在两个用户编辑同一条记录时发生错误。 不知道如何锁定一条记录及如何判断该记录的状况。请高手帮忙!
S sallypo Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #6 在修改的表中增加一个标志位用于控制该记录是否被销,控制方法: 修改前 ~~~~~~~~~~~~~~~~ 1 查找所有可以修改的记录 2 将要修改的记录行的标志位置为“锁住”状态 修改后:将修改记录的标志位还原为“未锁住”状态
在修改的表中增加一个标志位用于控制该记录是否被销,控制方法: 修改前 ~~~~~~~~~~~~~~~~ 1 查找所有可以修改的记录 2 将要修改的记录行的标志位置为“锁住”状态 修改后:将修改记录的标志位还原为“未锁住”状态
T tsaietsai Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #8 我觉得这个问题好象不是太难,就是我是初学,许多命令都 不会。恳切希望高手给我帮助!
G gigiiou Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #9 to sallypo: SQL中怎么锁定一条记录阿?
F Fanny501 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #10 同意sallypo的说法! 给该表添加一个字段,第一个要修改该记录的用户访问的时候,把标志设为 read; 其他人用户在该标志为read 的时候,只能对该记录进行读操作; 第一个用户修改完毕,提交的时候,在把标志设为 write; 具体实现,可以在触发器里面写, IF 标志为 read 。。。。cancle 这个操作,并提示。。。。
同意sallypo的说法! 给该表添加一个字段,第一个要修改该记录的用户访问的时候,把标志设为 read; 其他人用户在该标志为read 的时候,只能对该记录进行读操作; 第一个用户修改完毕,提交的时候,在把标志设为 write; 具体实现,可以在触发器里面写, IF 标志为 read 。。。。cancle 这个操作,并提示。。。。
M masks Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #11 在onPostError事件里写: s:=UpperCase(E.Message); if Pos('KEY VIOLATION',s) <> 0 then //代号重复 if (Pos('ANOTHER USER CHANGED THE RECORD',s) <> 0) or (Pos('RECORD CHANGED BY ANOTHER USER',s) <> 0) then//别人已先修改此记录 if Pos('KEY DELETED',s) <> 0 then//别人已先删除此记录
在onPostError事件里写: s:=UpperCase(E.Message); if Pos('KEY VIOLATION',s) <> 0 then //代号重复 if (Pos('ANOTHER USER CHANGED THE RECORD',s) <> 0) or (Pos('RECORD CHANGED BY ANOTHER USER',s) <> 0) then//别人已先修改此记录 if Pos('KEY DELETED',s) <> 0 then//别人已先删除此记录
沉 沉香屑 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #12 一般没有必要用字段来控制 加了for update,查询到的记录就会加更新锁 其它用户只能读
T tsaietsai Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-26 #13 但我根本没有query部件,而且思路是即时的
有 有毛病 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-26 #14 另外加一子段的缺点: 当客户机突然死机或掉电,或非正常退出时,或造成此记录的永久锁死。
T tsaietsai Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-27 #17 to 沉香屑: 用select .... for update 后,应该是一批数据不能被别的用户更改,我只想更改一条记录,锁定一条记录。
X xiaoshijun Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-27 #18 SQL TABLE设置一个唯一的ID号,修改的时候最好不要直接修改,用UPDATE+WHERE ID.