DELETE 命令请参阅
DELETE - SQL | DELETED() | PACK | RECALL | SET DELETED
[该主题是 beta 版的一部分并将在今后的版本中修改. 空的主题包含了一个占位符.]
发送该主题的返馈到微软
给要删除的记录做标记。
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 恢复(清除标记)。
示例
下面的示例打开 testdata 数据库中的 customer 表,delete 标识字段 country 中包含 usa 的所有要删除的记录。所有做了删除标记的记录都显示出来。recall all 用来清除所有删除标记。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && 打开 Customer 表
DELETE FOR country = 'USA' && 删除标记
CLEAR
LIST FIELDS company, country FOR DELETED() && List marked records
RECALL ALL && Unmark all records marked for deletion
请参阅
DELETE - SQL | DELETED() | PACK | RECALL | SET DELETED