ROLLBACK 恢复当前事务期间所做的任何修改。如果事务是嵌套的,则只恢复自前一个 BEGIN TRANSACTION 命令起所做的修改,恢复后,程序继续执行下面的语句。
如果事务处理期间给一个记录或文件加了锁,则这些锁将被解除。
示例
在下例中, 打开 testdata 数据库中的 customer 表。为 customer 表设置开放式表缓存。显示 cust_id 和 company 字段内容, 然后用缓存中的数据替换 company 字段内容。
然后执行 begin transaction 命令开始一个事务。事务处理期间,先显示出 cust_id 和 company 字段的内容,然后更新 company 字段的内容,并将新的内容显示出来。接着执行 rollback 命令恢复 company 字段原来的内容,并再次把 cust_id 和 company 字段显示出来,其中的 company 已恢复了原有的内容。
CLOSE DATABASES
CLEAR
* 事务处理只支持数据库
OPEN DATABASE (HOME(2) + 'Data\testdata')
SET MULTILOCKS ON && 请求缓存
USE customer
=CURSORSETPROP("Buffering",5)
? '原始的 company 字段'
LIST FIELDS cust_id, company NEXT 5
Replace All company WITH "***" && 修改字段内容
BEGIN TRANSACTION
=TABLEUPDATE(.T.)
GO TOP
? '修改后的 company 字段'
LIST FIELDS cust_id, company NEXT 5
ROLLBACK && 恢复原始的字段内容
=TABLEREVERT(.T.)
GO TOP
? '恢复后的 company 字段'
LIST FIELDS cust_id, company NEXT 5