Functions.RLock 方法 (String, __Usual) | |
锁定当前记录。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION RLock(
cRecordNumberList AS STRING,
uArea AS USUAL
) AS LOGIC
public static bool RLock(
string cRecordNumberList,
__Usual uArea
)
查看代码参数
- cRecordNumberList
- 类型:String
指定 RLOCK( ) 尝试锁定多个记录。
字符表达式 cRecordNumberList 指定一个或多个记录编号,用逗号分隔,RLOCK( ) 尝试锁定。
例如,要尝试锁定表中的前四条记录,cRecordNumberList 应包含 1, 2, 3, 4。
- uArea
- 类型:__Usual
指定要在其上执行操作的表的工作区名称或编号。
返回值
类型:
Boolean
如果成功获得记录锁,则返回 TRUE;否则返回 FALSE。
如果尝试锁定多个记录且其中之一失败,则成功的锁将被释放。
在空数据库中尝试锁定记录返回 TRUE。
备注
如果数据库文件以共享模式打开,则在执行任何写入数据库文件的操作之前,必须获得记录锁。
对于 RLock() 的每次调用,都会尝试锁定目标记录,并返回结果作为逻辑值。
如果另一个进程当前对目标记录拥有文件锁或记录锁,则获取记录锁的尝试将失败。
如果 RLock() 成功,记录将被锁定,其他进程将在锁释放之前无法更新该记录。
RLock() 提供共享锁,允许其他用户对锁定记录进行只读访问,同时仅允许当前进程进行修改。
记录锁在您显式解锁(例如使用 DBUnLock())、关闭数据库文件或尝试另一个文件或记录锁(使用 RLock() 或 DBRLock() 而不带参数)之前保持有效。
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定或调用接受工作区参数(工作区编号或别名)的重载来使其在未选定的工作区上操作。
该功能很有用,因为 RLock() 不会自动尝试锁定相关文件。
示例
此示例使用 RLock() 删除共享数据库文件中的一条记录:
1USE customer INDEX custname SHARED NEW
2SEEK "Smith"
3IF Customer->Found()
4 IF Customer->RLock()
5 Customer->DBDelete()
6 QOut("Smith 已删除")
7 ELSE
8 QOut("记录正在被其他人使用")
9 ENDIF
10ELSE
11 QOut("Smith 不在客户文件中")
12ENDIF
13CLOSE
参见