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

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

ЗЫ: Сорри если вопросы покажутся глупыми, не обессудте новичка ))
...
Рейтинг: 0 / 0
Транзакции
    #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
Транзакции
    #34382470
YuriyM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, понял
...
Рейтинг: 0 / 0
Транзакции
    #34389691
у меня была подобная ситуация
допустим при редактировании возникает ошибка
делать роллбэк - теряешь все
коммит - а чорт его знает чо тама...
создавал перед операцией savepoint и в случае ошибки - rollback to savepoint имя
и я оставался в контексте ранее стартовавшей транзакции
...
Рейтинг: 0 / 0
Транзакции
    #34389710
и после этого моно выполнять команды/операции дальше
и уже коммит или роллбэк будет относится ко всему блоку проведенных операций
как от начала транзакции до ошибки так и после ошибки до завершения транзакции
удобно)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Транзакции
    #39996449
WayfarerDimitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток, прошу прощение за некропостинг но мой вопрос близок к обсуждению в данном топике.
Ситуация касается работы libpq.
- вызываю PQexec("START TRANSACTION;") - выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос корректен, выполняется успешно;
- вызываю PQexec("INSERT... ") - запрос не корректен, возвращает ошибку;
- вызываю PQexec("COMMIT;") - выполняется без ошибок, только PQcmdStatus(res) возвращает "ROLLBACK";

Сам вопрос, есть ли какой-нибудь способ заставить libpq возвращать ошибку при вызове "COMMIT;" в данной ситуации? или проверка cmdStatus это единственный способ узнать что коммит не выполнился и произошел откат.
...
Рейтинг: 0 / 0
Транзакции
    #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
Транзакции
    #39996486
WayfarerDimitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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