1C vs SQL: BeginTrans, CommitTrans, Rollback - не срабатывает транзакция :( #82644


#0 by Gavrila
Подскажите, плз, как правильно использовать транзакции при работе с SQL. Использование "BeginTrans" и "CommitTrans" - ошибок не выдает, но при попытке отменить транзакцию при помощи "Rollback" вываливается ошибка: Could not find stored procedure 'Rollback'. :(
#1 by француз
код можно?.. интересно, как ты стравил такую великолепную,я бы даже сказал великолепнейшую, пару, как 1С и SQL....
#2 by Gavrila
#3 by Gavrila
+ Соединение.CommitTrans; так вот матерится на Соединение.Rollback; :(
#4 by Дяпти
Может просто делать: Соединение.Execute("BEGIN TRAN|COMMIT|ROLLBACK TRAN")
#5 by Gavrila
спасибо заработало :)
#6 by Gavrila
а поддерживает ли SQL "вложенные" транзакции ?
#7 by Дяпти
городить можно, но он вложенные инструкции будет игнорировать.
#8 by Gavrila
что значит "вложенные инструкции" ? извини за тупость я в SQLе не силен... допустим у меня есть "общая" выгрузка данных в SQL, которая может быть разбита на отдельные "независимые блоки", можно ли будет в таком случае использовать транзакции на общий ход выгрузки и на каждый отдельный "независимый блок". к примеру так: НачалоТранзакция1   НачалоТранзакция2    .....   КонецТранзакции2   НачалоТранзакция3    .....   КонецТранзакции3 КонецТранзакции1
#9 by Дяпти
В этом случае SQL обработает только НачалоТранзакция1 ... КонецТранзакции1 и в общем то непонятен мне смысл таких вложений. Если 1-й вложенный блок не закоммитится - должен ли выполняться второй и так далее? Если должен - тогда лишним будут операторы внешней транзакции, а если не должен - тогда операторы внутренних транзакций. Вот и все.
#10 by Gavrila
Дяпти спасибо за ответы :) зы: внешняя транзакция по сути не нужна(так как выгрузка каждого блока не будет зависеть от результата выгрузки остальных), эт я уже после того как вопрос задал понял :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С