Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / откат sqlexec / 3 сообщений из 3, страница 1 из 1
27.11.2003, 00:52
    #32336118
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
откат sqlexec
Есть последовательность sqlexec:
SqlExec(handle, "CREATE TABLE TMPPOW1(idob char(10) NOT NULL, ...")

UpdateCommand = "CREATE PROCEDURE UpdatePow AS UPDATE ARHPOW SET MPOWER =TMPPOW1.MPOWER, RPOWER =TMPPOW1.RPOWER WHERE ..."

SqlExec(handle, UpdateCommand)
SqlExec(handle, "CREATE INDEX IX_ARHPOW ON ARHPOW(m_gr, m_adr)")
SqlExec(handle, "CREATE INDEX IX_ARHPOW1 ON ARHPOW(idob)")
SqlExec(handle, "CREATE INDEX IX_TMPPOW1 ON TMPPOW1(m_gr, m_adr)")
SqlExec(handle, " ALTER TABLE METERS ADD DEEP char(10) NULL ")
и т.п. В случае ошибки в любом из sqlexec(), т.е. return value<=0 необходимо отменить все предыдущие exec'и Как это сделать?
Не писать же для каждого sqlexec'а аналогичный sqlexec с противоположными действиями?
Может как-то можно все sqlexec'и объединить в один? Только учтите их примерно 30-50.
...
Рейтинг: 0 / 0
27.11.2003, 08:59
    #32336247
bdv9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
откат sqlexec
Посмотри команды:
Begin Transaction
End Transaction
SQLCommit( )
SQLRollBack( )
...
Рейтинг: 0 / 0
27.11.2003, 09:26
    #32336272
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
откат sqlexec
Код выглядит примерно так (из работающей программы):

... (соединение)

SQLSETPROP(nHandle, 'Transactions', 2)
SQLExec(nHandle, "BEGIN TRANSACTION Lock ")

... (операции данной транзакции)

SQLExec(nHandle, "COMMIT TRANSACTION Lock ")

Жирным выделено имя транзакции. Почему использованы именованные транзакции. Потому что путем экспериментов я установил, что если использовать неименованные транзакции то происходит следующее:
- если программу выключить с помощью Reset, то все в порядке, транзакция откатывается;
- если программу прервать QUIT (а мой обработчик ошибок как правило так и поступает), то транзакция неявным способом подтверждается, хотя стоят ручные транзакции
Все это проверено целой серией экспериментов, хотя возможно я не использовал какие-то еще настройки.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / откат sqlexec / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]