Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
标记记录,以便使用 SetDeleted(TRUE) 过滤、使用 Deleted() 查询或使用 PACK 从数据库文件中物理删除。
DELETE [<Scope>] [WHILE <lCondition>] [FOR <lCondition>] [[IN|ALIAS] <workarea>]
<Scope> | 当前数据库文件中要处理的部分。 默认为所有可见记录。范围可以是以下一个或多个子句: [NEXT <NEXT>] 可选择指定从源文件第一条记录开始处理的记录数。这将从源文件的第一条记录开始。 [RECORD <rec>] 可选的记录 ID 如果指定,处理将从源文件中的该数据记录开始。 [<rest:REST>] 选项 REST 可指定是否从当前记录到最后一条记录按顺序搜索。如果指定了条件,则选项 ALL 为默认值。 [ALL] 选项 ALL 指定导入源文件中的所有记录。这是默认设置。 |
WHILE <lCondition> | 范围内每条可见记录都必须满足的条件,从当前记录开始。 一旦 while 条件失败,进程就会终止。 如果没有指定 <Scope>,while 条件会将默认范围改为文件中的其他可见记录。 |
FOR <lCondition> | 处理范围内每条可见记录必须满足的条件。 如果某条记录不符合指定条件,则会被忽略,并处理下一条可见记录。 如果没有指定 <Scope> 或 WHILE 子句,则 for 条件会将默认范围改为所有可见记录。 |
IN | ALIAS <workarea> | 指定执行操作的工作区。 |
该命令只是标记要删除的记录。 要永久删除已标记为要删除的记录,在 PACK 前可以用 RECALL 恢复已删除的记录。
可见性: | 如果当前记录已删除,且 SetDeleted() 为 "true",则该记录将一直可见,直到记录指针被移动。 |
显示删除标记: | 显示命令(如 LIST 和 DISPLAY)会用星号 (*) 标记已删除的记录。 |
删除所有记录: | 要永久删除数据库文件中的所有记录(无论其删除状态如何),请对文件进行 ZAP。 |
共享模式: | 对于共享数据库,该命令需要锁定其操作的所有记录。 可以使用一个或多个记录锁或文件锁来实现这一要求,具体取决于命令的范围。 |
此示例演示了如何使用 FOR 子句来标记一组要删除的记录:
USE sales INDEX salesman NEW
DELETE ALL FOR Inactive
XSharp.RT.DLL
DbDelete(), DBRLock(), Deleted(), FLock(), PACK, RECALL, RLock(), SetDeleted(), ZAP