Работаю с БД MySql (v. 5.5.25) через компоненты Zeos. Не получается откатить операцию командой ZQuery1.Connection.Rollback
Подробнее:
Есть форма редактировния записи из таблицы, на ней грид со строками из дочерней тблицы и тут же кнопки добавления/редактирования/удаления этих подерних строк.
У компоненты ZConnection1 свойство AutoCommit = True, а TransactionIsolationLevel = tiReadCommitted
Перед открытием формы (ShowModal) я открываю транзакцию
При закрытии формы если она закрыта по кнопке ОК то выполняю Commit, иначе - Rollback
- Код: Выделить всё
frmFizGrid.ZQuery.Connection.StartTransaction;
if ShowModal = mrOk then
frmFizGrid.ZQuery.Connection.Commit
else begin
frmFizGrid.ZQuery.Connection.Rollback;
ShowMessage('Выполнился Rollback');
end;
После открытия формы и, соответственно, начала транзакции, добавляю строку в дочернюю таблицу (в ZQuery пишу 'insert into tbl (...) values (...)' и далее делаю ExecSql)
Далее нажимаю на Cancel, на экран, как и ожиджается выскакивает сообщение 'Выполнился Rollback', НО запись в дочерней таблице так и остается, хотя, по идее, операция должна была откатиться и записи в дочерней таблице быть не должно...
Подскажите, что я тут делаю не так?