数据库和组件,查询&表来自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;
如果我保留上面的查询,它就可以了。一旦我取消注释线,它就不会。它只是从我的网格中删除记录,但数据库中的数据是完整的。
我在这里乱搞什么?
答案 0 :(得分:0)
根据此处找到的文档(多用户和多线程,锁定机制和事务),似乎: http://www.aidaim.com/products/acr/guide_bde_alternative_client-server_single-file_embedded_bde_replacement_database_delphi_c++builder_kylix/index.php
" - 清空,重组,删除和重命名交易中涉及的表格"是与事务不兼容的操作。
如果我错了,请纠正我。
答案 1 :(得分:0)
在我看来,COMMIT之前的陈述;没有分号。即一个简单的语法恐怖