Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Commit и Rollback (число прочтений - 2697 )
sour
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 30. Ноября 2006
Commit и Rollback
18. Декабря 2006 :: 10:41
Печать  
Как закоммитить или откатить транзакцию?

Мне нужно выполнить следующий код:

<Начать транзакцию>
Попытка
  RS.ВыполнитьСкалярный("INSERT INTO MyTable(id, text) VALUES (5, 'my text')");
  RS.ВыполнитьСкалярный("INSERT INTO MyTable(id, text) VALUES (5, 'my text')");
  <Commit> //т.е. если 2 оператора выше выполнились успешно, то фиксируем транзакцию
Исключение
  <Rollback> //Откат транзакции в случае неудачи
КонецПопытки

Подскажить как с помощь 1cpp начать транзакцию и вней выполнять какие-то операции, а потом ее зафиксировть или откатить?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #1 - 18. Декабря 2006 :: 11:00
Печать  
RS.ВыполнитьИнструкцию("begin tran");
Попытка
  RS.ВыполнитьСкалярный("INSERT INTO MyTable(id, text) VALUES (5, 'my text')");
  RS.ВыполнитьСкалярный("INSERT INTO MyTable(id, text) VALUES (5, 'my text')");
  RS.ВыполнитьИнструкцию("commit tran");
Исключение
  RS.ВыполнитьИнструкцию("rollback tran");
КонецПопытки
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #2 - 18. Декабря 2006 :: 11:02
Печать  
А в ОЛЕДБ можно использоовать эти же функции?
или есть какой-то другой синтаксис?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #3 - 18. Декабря 2006 :: 11:05
Печать  
Не считая того что передача insert-запроса в метод ВыполнитьСкалярный это неформатное использование метода, и работает потому что нет некоторых проверок в коде 1с++. Надо писать ВыполнитьИнструкцию.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #4 - 18. Декабря 2006 :: 11:15
Печать  
artbear писал(а) 18. Декабря 2006 :: 11:02:
А в ОЛЕДБ можно использоовать эти же функции?
или есть какой-то другой синтаксис?

Если имеется в виду использование OLEDB провайдера VFP. Незнаю, надо смотреть описание этого провайдера. Хотя в данном случае синтаксис, вроде бы, совпадает со стандартом SQL-92.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #5 - 18. Декабря 2006 :: 11:18
Печать  
В принципе надо еще учитывать то, что в 77 пользователь может прервать выполнение модуля 1С.
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Commit и Rollback
Ответ #6 - 19. Декабря 2006 :: 06:34
Печать  
artbear писал(а) 18. Декабря 2006 :: 11:02:
А в ОЛЕДБ можно использоовать эти же функции?
или есть какой-то другой синтаксис?

Для OLE DB есть, например "BEGIN TRANSACTION" (и прочее). Но использовать это для 1С не получится. Транзакции поддерживаются, как я понял, только для баз данных в формате DBC (т.е. когда все таблицы в одном здоровом файле). А для dbf - фиг Печаль
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать