Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2012, 17:25   #1
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос Firebird - множественный Update никак не commit

Здравствуйте!
Нужно в таблице обновить некоторые записи. Пробовал уже 10 разных вариантов - никак не пашет. Оказалось что тупо не хватает Commit (нажатие кнопки Commit в IBExpert сразу всё сделалось). Как сделать, чтобы в хранимой процедуре было (auto) commit ?
DeveloPerchik вне форума Ответить с цитированием
Старый 27.07.2012, 18:21   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Стартует и завершает транзакции всегда клиентское приложение.
В программе перед запуском ХП надо стартануть, после коммитить и все.
Скандербег вне форума Ответить с цитированием
Старый 27.07.2012, 20:14   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Стартует и завершает транзакции всегда клиентское приложение.
Не обязательно. Если клиент открыл транзакцию в хранимой процедуре, то почему бы в хранимой другой процедуре ее не закрывать?
Цитата:
Как сделать, чтобы в хранимой процедуре было (auto) commit ?
Ну есть же команда коммита http://www.firebirdsql.su/doku.php?id=commit
Неужели не помогает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2012, 20:35   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Это Firebird. Поэтому:
Цитата:
В триггерах и процедурах стартовать и завершать транзакции невозможно. Да и ни к чему это.
Это из статьи про транзакции. Т.е., да, не поможет.
Начиная с 2.5 можно некоторые куски кода в ХП выполнять в отдельных транзакциях, но зачем... Один геморр.

В случае множественного выполнения команд SQL, модифицирующих БД вполне можно обойтись конструкцией EXECUTE BLOCK без применения ХП, с которыми, оказывается, использование транзакций на клиенте вызывает вопросы.
Скандербег вне форума Ответить с цитированием
Старый 27.07.2012, 20:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это Firebird
В принципе ты прав... Я такие вещи на Оракле и Сиквеле проделывал, но вот на огнептице не доводилось...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2012, 23:27   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

можно попробовать выполнить эту процедуру в
Код:
IN AUTONOMOUS TRANSACTION DO
  { <simple statement> | <compound statement> }
она должна commit-нуть автоматически
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
svn post commit на форум phpbb men232 PHP 0 29.04.2012 13:03
Update Firebird RuVarez БД в Delphi 6 24.02.2012 20:42
InterBase - Commit, Rollback SoftKoc БД в Delphi 3 16.12.2010 13:33
Как сделать Commit? Delphi + Ehlib + Firebird. Alexei91 БД в Delphi 3 11.08.2010 10:58
пытаюсь освоить firebird, пока что-то никак :) friz БД в Delphi 3 21.09.2009 14:18