0

数据库和组件,查询和表来自Accuracer。

我正在使用一个简单的删除查询:

procedure TMain_Form.Button1Click(Sender: TObject);
begin
DATA_MODULE.QUERY.Close;
DATA_MODULE.QUERY.SQL.Clear;
//DATA_MODULE.QUERY.SQL.Add('START TRANSACTION;');
DATA_MODULE.QUERY.SQL.Add('delete from TABLE where DONE = TRUE');

try
//DATA_MODULE.QUERY.SQL.Add('COMMIT;');
DATA_MODULE.QUERY.ExecSQL;
DATA_MODULE.TABLE.Refresh;
except
//DATA_MODULE.QUERY.SQL.Text := 'ROLLBACK';
//DATA_MODULE.QUERY.ExecSQL;
DATA_MODULE.TABLE.Cancel;
end;
end;

如果我保留上面的查询,它可以工作。一旦我取消注释这些行,它就不会。它只是从我的网格中删除记录,但数据库中的数据是完整的。

我在这里搞砸了什么吗?

4

2 回答 2

0

看来,根据此处找到的文档(多用户和多线程、锁定机制和事务): http ://www.aidaim.com/products/acr/guide_bde_alternative_client-server_single-file_embedded_bde_replacement_database_delphi_c++builder_kylix/index.php

即“- 事务中涉及的清空、重构、删除和重命名表”是与事务不兼容的操作。

如果我错了,请纠正我。

于 2015-06-25T11:35:06.803 回答
0

我突然想到 COMMIT 之前的声明;没有分号。即一个简单的语法错误

于 2019-03-12T09:12:38.850 回答