| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > TIBTransaction, когда происходит Commit? |
| Автор: pavelv 26.12.2006, 08:39 |
| Настройки тразакции: DefaultAction: TACommit; параметры: read_committed rec_version nowait IdleTimer = 0; В IbDatabase эта же транзакиция стоит на default. Хочу понять в какой именно момент происходит "коммит" у данной транзакции? Судя по настройкам должен быть сразу, но к примеру при такой последовательности запросов: 'Create table TEST(a integer)' И потом сразу: 'select * from TEST' - этот запрос выдаёт ошибку о том, что таблица ещё не существует. Но если после верхнего сделать "Commit", то второй срабатывает нормально. Запрос делаю через TIBQueryу кт в транзакциях указана вышеописанная. |
| Автор: Mephisto 26.12.2006, 09:37 |
| Насколько я знаю создание, удаление таблиц, БД, триггеров и.т.д. не может быть по определению внутри одной транзакции. Для них нужно делать отдельные. А под 1 транзакцией понимается все от open..Close, Exec..Close. Так что лучше сам определяй где и когда тебе нужно делать comit и rollback! |
| Автор: pavelv 26.12.2006, 11:07 |
| Тоесть предлагаешь DefaultAction ставить на None и выполнять всё тоже самое? P.S> Где можно прочитать инфу о том, что определено в рамках одной транзакции. К примеру добавление полей определено в рамках одной транзакции? |
| Автор: Golden Hands 30.12.2006, 01:20 |
| Нельзя в одной транзакции менять медаданные и тут же выполнять запросы, которые используют эти метаданные: alter table add field1 int update table set field1 = 10 |
| Автор: Mephisto 3.1.2007, 09:52 |
| Golden Hands, и я о чем... |