2015-06-25 4 views
0

База данных и компоненты, запрос & стол от Accuracer.exactacer: transaction not working

Я использую простой запрос на удаление:

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

Это таблица в памяти? Спросить, потому что ['они говорят'] (http://www.accuracer.com/products/acr/guide_bde_alternative_client-server_single-file_embedded_bde_replacement_database_delphi_c++builder_kylix/transactions.php), что * Accuracer поддерживает транзакции только для дисковых баз данных *. – TLama

+0

нет, это база данных диска. – user763539

+0

Свойство inMemory запроса также установлено в false ... – user763539

ответ

0

Кажется, согласно документации находится здесь (Multi-User и Multi-Thread, запирающий механизм и сделок): http://www.aidaim.com/products/acr/guide_bde_alternative_client-server_single-file_embedded_bde_replacement_database_delphi_c++builder_kylix/index.php

, что «- опорожнение, реструктуризация, удаление и переименование таблиц, участвующих в сделке» являются операциями, которые несовместимы с транзакциями.

Если я ошибаюсь, исправьте меня.