delete 命令

示例 请参阅

给要删除的记录做标记。

语法

DELETE
[Scope] [FOR lExpression1] [WHILE lExpression2]
[IN nWorkArea | cTableAlias]
[NOOPTIMIZE]

参数

Scope

指定要做删除标记的记录范围,Scope 子句有:ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。

有关 Scope 子句的详细内容,请参阅 Scope 子句主题或《开发指南》第二章“语言概述”。

DELETE 的默认范围是当前记录 (NEXT 1)。

FOR lExpression1

指定一个条件,仅给满足逻辑条件 lExpression1 的记录做删除标记。
如果 lExpression1 是一个可优化表达式,且表在 DELETED( ) 上建立索引时,可以用 Rushmore 优化 DELETE ... FOR 创建的查询。要得到最佳性能,可在 FOR 子句中使用一个可优化表达式。有关 Rushmore 可优化表达式的内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术,或《开发指南》的第十七章“优化应用程序”。

WHILE lExpression2

指定一个条件。只要 lExpression2 计算为“真”(.T.),就给这些记录做删除标记。

IN nWorkArea

指定要添加记录删除标记的表所在的工作区。

IN cTableAlias

指定要添加记录删除标记的表的别名。
如果省略 nWorkArea 和 cTableAlias,就给当前选定工作区中的表记录做删除标记。

NOOPTIMIZE

关闭 DELETE 的 Rushmore 优化。

说明

标有删除标记的记录在使用 PACK 前并不从表上做物理删除。标有删除标记的记录可以用 RECALL 恢复(清除标记)。