D E L E T E 命 令
给要删除的记录做标记
语 法
DELETE
[ Scope ] [FOR lExpression1 ] [ W H ILE lExpression2 ] [ IN n W orkArea | cTableAlias ]
[NOOPTIMIZE]
参 数 描 述
Scope
指 定 要 做 删 除 标 记 的 记 录 范 围 范 围 子 句 有 ALL NEXT nRecords
RECORD nRecordNumber 和 REST
有关范围子句的详细内容 请参阅 帮助 中的 范围子句 和 语言概述
DELETE 的默认范围是当前记录 (NEXT 1)
FOR lExpression1
指 定 一 个 条 件 仅 给 满 足 逻 辑 条 件 lExpression1 的 记 录 做 删 除 标 记
如果 lExpression1 是一个可优化表达式 且表在 DECETED( ) 上建立索引时 可以用Rushmore 优化 DELETE ... FOR 创建的查询 要得到最佳性能 可在 FOR 子句中使用一个可优化表达式
有关 Rushmore 优化表达式的内容 请参阅稍后部分的 SET OPTIMIZE 命 令 和
M icrosoft Visual FoxPro 6.0 中 文 版 程 序 员 指 南 第 十 五 章 优 化 应 用 程序 中 的 掌 握 Rushmore 技术
W H ILE lExpression2
只 要 lExpression2 计 算 为 真 (.T.) 就 给 这 些 记 录 做 删 除 标 记
IN n W orkArea
指 定 要 加 记 录 删 除 标 记 的 表 所 在 的 工 作 区
IN cTableAlias
指 定 要 加 记 录 删 除 标 记 的 表 的 别 名
如 果 省 略 nWorkArea 和 cTableAlias 就 给 当 前 选 定 工 作 区 中 的 表 记 录 做 删 除 标记
NOOPTIMIZE
禁 止 DELETE 进 行 Rushmore 优 化
说 明
标有删除标记的记录在使用 PACK 前并不从表上做物理删除 标有删除标记的记录可以用 RECALL 恢复 清除标记
示 例
下列示例打开 testdata 数据库中的 customer 表 对于 country 字段中包含 USA 的所有记录 使用 DELETE 命令标记为删除 显示所有标记为删除的记录 使 用 RECALL ALL 命令恢复所有标记为删除的记录
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 打开 Customer 表
CLEAR
country = 'USA' && 删除标记
LIST FIELDS company, country FOR DELETED( ) && 列出已标记删除的记录
RECALL ALL && 取消全部记录的删除标记
请 参 阅
DELETE-SQL, DELETED ( ) , PACK RECALL , SET DELETED