【发布时间】:2014-12-17 02:28:31
【问题描述】:
REPEAT With FRAME:
prompt-for IN-SCAN3.scan.
if input IN-SCAN3.scan="" then Do:
Message "please input date.".
undo,retry.
end.
else DO:
FIND FIRST in-scan3 USING IN-SCAN3.scan NO-LOCK NO-WAIT NO-ERROR.
if avail In-scan3 then DO:
str="OK".
display str.
next-prompt IN-SCAN3.scan.
end.
else DO:
CREATE In-scan3.
ASSIGN IN-scan3.scan=INPUT in-scan3.scan.
str="NO". DISPLAY str.
next-prompt In-scan3.scan.
END.
end.
begin=begin + 1.
end.
问题描述: 有20个用户同时使用扫描,首先查找输入数据,如果没有找到,则在数据库中创建一条记录。问题是,同时运行会出现死锁。 我在查找时尝试NO-LOCK NO-WAIT与记录,创建记录时操作会出现死锁。
感谢任何回答。
【问题讨论】:
-
我认为你应该使用 EXCLUSIVE-LOCK 而不是 NO-LOCK 来避免死锁。然后,您可以使用LOCKED函数来检查记录是否被锁定并进行相应的操作。
标签: concurrency openedge progress-db 4gl