DELETE-SQL 命 令
标记删除记录
语 法
DELETE FROM [ DatabaseName !] TableName
[ W H E R E FilterCondition1 [AND | OR FilterCondition2 ...]]
参 数 描 述
FROM [ DatabaseNam e!] TableName
指 定 表 中 哪 些 记 录 标 记 为 删 除
DatabaseName! 指定包含表的非作用数据库名称 如果数据库不是当前使用的数据库 您必须要包含表所在数据库的名称 在数据库名称之后与表名之前使用叹号 (!) 分隔
W H E R E FilterCondition1 [AND | OR FilterCondition2 ...]
指 定 Visual FoxPro 标 记 删 除 的 记 录 的 规 则
FilterCondition 指定一定条件 符合的该条件的记录将标记为删除 您可以包含随意数量的过滤条件 对它使用 AND 或 OR 操作符连接 您还可以使用 NOT 操作符将逻辑表达式的值取反 或使用 EMPTY( ) 函数检查一个空字段
说 明
在执行 PACK 命令之前 标记为删除的记录实际上并没有从表中删除 使用 RECALL
命令可以恢复 取消标记 已做删除标记的记录
如果 SET DELETED 设置为 ON 所有包含范围的命令均忽略已做删除标记的记录 与 DELETE, DELETE 不同 当在为共享而打开的表中标记多个删除记录时 SQL 使用记录锁定 这样做减少了记录在多用户情况下的冲突 但是可能会降低性能 如果要获取最大性能 应以独占方式打开表或使用 FLOCK( ) 函数锁定表
示 例
以下示例打开了 testdata 数据库中的 customer 表 使用 DELETE-SQL 将 country 字段
中值为 USA 的记录标记为删除 显示所有标记为删除的记录 使用 RECALL ALL 命令将所有标记为删除的记录取消标记
CLOSE DATABASES CLEAR
OPEN DATABASE HOME(2)+"Data\testdata" USE customer && Open Customer table
FROM customer WHERE country = "USA" && 标记删除
CLEAR
LIST FIELDS company, country FOR DELETED( ) && 列出标记的记录
- 如果文件在此时整理
将删除记录
WAIT WINDOW "Records currently marked for deletion"+CHR(13) + ; "Press any key to revert..."
- 取消所有标记删除记录的标记
RECALL ALL CLEAR
- 验证恢复的记录
COUNT FOR DELETED( )=.T. TO nDeleted
- 将 nDeleted 转化为字符串并显示信息
WAIT WINDOW ALLTRIM(STR(nDeleted)) + " records marked for deletion."
请 参 阅
DELETE , DELETED ( ) , PACK , RECALL , SET DELETED