Найден 1 результат

readiv
Чт 25 дек 2014 22:50
Форум: MySQL Data Access Components
Тема: Транзакции в MyQuery
Ответы: 11
Просмотры: 26922

Re: Транзакции в MyQuery

Понекропостю.

Код: Выделить всё

  con1.StartTransaction;
  try
    myqry1.SQL.Clear;
    myqry1.SQL.Add('INSERT INTO shop_brands (url) VALUES ('+QuotedStr(Translit_URL(S))+');');
    myqry1.SQL.Add('SELECT @@IDENTITY;');
    myqry1.ExecSQL;
    id:=myqry1.Fields[0].AsInteger;
    myqry1.SQL.Add('INSERTtttt INTO shop_brands_i18n (id,locale,name,meta_title,meta_description,meta_keywords) VALUES ('+
                   IntToStr(id)+', ''ru'', ' +
                   QuotedStr(S)+', '+QuotedStr(S)+', '+QuotedStr(S)+', '+QuotedStr(S)+');');
    myqry1.ExecSQL;
    con1.Commit;
  except
    con1.Rollback;
  end;
INSERTtttt - ошибка сделана специально что бы вызвать исключение. После исключения должен отработать Rollback и откатить первый INSERT, но этого не происходит. Вместо этого в этой таблице создаются аж 2 :shock: индентичные записи. FetchAll = True. CreateConnection = False.

Пробовал с MyConnection.ExecSQL('set autocommit = 0', []); результат тот же. Посоветуйте в какую сторону копать.