Delphi Delphi. Ручное Управление Транзакциями

  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
1 Мар 2015
1,116
214
155
VK
#1
Работаю с MySQL InnoDB, там транзакции, коммиты и откаты идут автоматом, но товарищ мой сказал «хочу сам управлять этим». И вот что получилось, море кода, но да, управление есть…

На примере вставки записи в новую таблицу
Код:
 if not InputQuery('Название шкалы','',scaleName) then exit;

  myOwner:=(Self.Owner.Owner as TTestsMF);

  //add scale here
  with qSelectScalesWhereTestID do begin
  Connection:=myOwner.FDConnection_ExternalConnect;
      try
       Params.ParamValues['tests_id']:=FTestID;
       CachedUpdates:=true;
       Open();
       trWrite.StartTransaction();
       Insert();
       FieldByName('name').AsString:=scaleName;
       //Post();

       if ApplyUpdates<>0 then raise Exception.Create(RowError.Message);
       trWrite.Commit();
       scaleID_local:=myOwner.CommonMethods.getLastInsertID();
      except

       on E:Exception do begin
       if trWrite.Active then trWrite.Rollback;
       Cancel;
       CancelUpdates;
       Application.ShowException(E);
       end;
      end;
  end;