Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Транзакции / 8 сообщений из 8, страница 1 из 1
10.03.2007, 22:57
    #34382318
YuriyM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Стартовал транзакцию.
Выполнил инсерт. (Удачно)
Выполнил апдейт. (Удачно)
И ещё один инсерт. (Ошибка)

Вопросы:
1) Обязательно нужно после ошибки делать rollback?
2) А если я сделаю коммит, это как-то повлияет? Логика подсказывает что всё равно все изменения будут потеряны но всё-же?

ЗЫ: Сорри если вопросы покажутся глупыми, не обессудте новичка ))
...
Рейтинг: 0 / 0
11.03.2007, 02:52
    #34382430
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
YuriyMСтартовал транзакцию.
Выполнил инсерт. (Удачно)
Выполнил апдейт. (Удачно)
И ещё один инсерт. (Ошибка)

Вопросы:
1) Обязательно нужно после ошибки делать rollback?
2) А если я сделаю коммит, это как-то повлияет? Логика подсказывает что всё равно все изменения будут потеряны но всё-же?

ЗЫ: Сорри если вопросы покажутся глупыми, не обессудте новичка ))

Posle pervoi oshibki, vse posleduyushie komandy(za isklucheniem COMMIT, ROLLBACK) budut ignorirovatsia. Prichem COMMIT, tak je kak i ROLLBACK otkatit tselikom vsu tranzaktsiu.
...
Рейтинг: 0 / 0
11.03.2007, 09:28
    #34382470
YuriyM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Спасибо, понял
...
Рейтинг: 0 / 0
14.03.2007, 11:41
    #34389691
Транзакции
у меня была подобная ситуация
допустим при редактировании возникает ошибка
делать роллбэк - теряешь все
коммит - а чорт его знает чо тама...
создавал перед операцией savepoint и в случае ошибки - rollback to savepoint имя
и я оставался в контексте ранее стартовавшей транзакции
...
Рейтинг: 0 / 0
14.03.2007, 11:45
    #34389710
Транзакции
и после этого моно выполнять команды/операции дальше
и уже коммит или роллбэк будет относится ко всему блоку проведенных операций
как от начала транзакции до ошибки так и после ошибки до завершения транзакции
удобно)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
08.09.2020, 10:21
    #39996449
WayfarerDimitri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Доброе время суток, прошу прощение за некропостинг но мой вопрос близок к обсуждению в данном топике.
Ситуация касается работы libpq.
- вызываю PQexec("START TRANSACTION;") - выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос корректен, выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос не корректен, возвращает ошибку;
- вызываю PQexec("COMMIT;") - выполняется без ошибок, только PQcmdStatus(res) возвращает "ROLLBACK";

Сам вопрос, есть ли какой-нибудь способ заставить libpq возвращать ошибку при вызове "COMMIT;" в данной ситуации? или проверка cmdStatus это единственный способ узнать что коммит не выполнился и произошел откат.
...
Рейтинг: 0 / 0
08.09.2020, 10:25
    #39996450
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
WayfarerDimitri
Доброе время суток, прошу прощение за некропостинг но мой вопрос близок к обсуждению в данном топике.
Ситуация касается работы libpq.
- вызываю PQexec("START TRANSACTION;") - выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос корректен, выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос не корректен, возвращает ошибку;
- вызываю PQexec("COMMIT;") - выполняется без ошибок, только PQcmdStatus(res) возвращает "ROLLBACK";

Сам вопрос, есть ли какой-нибудь способ заставить libpq возвращать ошибку при вызове "COMMIT;" в данной ситуации? или проверка cmdStatus это единственный способ узнать что коммит не выполнился и произошел откат.


лучше всего следить за ошибками остальных вызовов PQexec и вызывать rollback если ошибка где то произошла самостоятельно.
В общем случае ответ - нет нельзя, команда выполнилась поэтому ошибка возвращаться не будет, ошибка если команда вообще не выполнилась.
А тут транзакцию таки закрыли.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
08.09.2020, 11:47
    #39996486
WayfarerDimitri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции
Ясно, спасибо.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Транзакции / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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