|
Транзакции
|
|||
---|---|---|---|
#18+
Стартовал транзакцию. Выполнил инсерт. (Удачно) Выполнил апдейт. (Удачно) И ещё один инсерт. (Ошибка) Вопросы: 1) Обязательно нужно после ошибки делать rollback? 2) А если я сделаю коммит, это как-то повлияет? Логика подсказывает что всё равно все изменения будут потеряны но всё-же? ЗЫ: Сорри если вопросы покажутся глупыми, не обессудте новичка )) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2007, 22:57 |
|
Транзакции
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2007, 02:52 |
|
Транзакции
|
|||
---|---|---|---|
#18+
у меня была подобная ситуация допустим при редактировании возникает ошибка делать роллбэк - теряешь все коммит - а чорт его знает чо тама... создавал перед операцией savepoint и в случае ошибки - rollback to savepoint имя и я оставался в контексте ранее стартовавшей транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2007, 11:41 |
|
Транзакции
|
|||
---|---|---|---|
#18+
и после этого моно выполнять команды/операции дальше и уже коммит или роллбэк будет относится ко всему блоку проведенных операций как от начала транзакции до ошибки так и после ошибки до завершения транзакции удобно))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2007, 11:45 |
|
Транзакции
|
|||
---|---|---|---|
#18+
Доброе время суток, прошу прощение за некропостинг но мой вопрос близок к обсуждению в данном топике. Ситуация касается работы libpq. - вызываю PQexec("START TRANSACTION;") - выполняется успешно; - вызываю PQexec("INSERT... ") - запрос корректен, выполняется успешно; - вызываю PQexec("INSERT... ") - запрос не корректен, возвращает ошибку; - вызываю PQexec("COMMIT;") - выполняется без ошибок, только PQcmdStatus(res) возвращает "ROLLBACK"; Сам вопрос, есть ли какой-нибудь способ заставить libpq возвращать ошибку при вызове "COMMIT;" в данной ситуации? или проверка cmdStatus это единственный способ узнать что коммит не выполнился и произошел откат. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 10:21 |
|
Транзакции
|
|||
---|---|---|---|
#18+
WayfarerDimitri Доброе время суток, прошу прощение за некропостинг но мой вопрос близок к обсуждению в данном топике. Ситуация касается работы libpq. - вызываю PQexec("START TRANSACTION;") - выполняется успешно; - вызываю PQexec("INSERT... ") - запрос корректен, выполняется успешно; - вызываю PQexec("INSERT... ") - запрос не корректен, возвращает ошибку; - вызываю PQexec("COMMIT;") - выполняется без ошибок, только PQcmdStatus(res) возвращает "ROLLBACK"; Сам вопрос, есть ли какой-нибудь способ заставить libpq возвращать ошибку при вызове "COMMIT;" в данной ситуации? или проверка cmdStatus это единственный способ узнать что коммит не выполнился и произошел откат. лучше всего следить за ошибками остальных вызовов PQexec и вызывать rollback если ошибка где то произошла самостоятельно. В общем случае ответ - нет нельзя, команда выполнилась поэтому ошибка возвращаться не будет, ошибка если команда вообще не выполнилась. А тут транзакцию таки закрыли. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 10:25 |
|
|
start [/forum/topic.php?fid=53&fpage=23&tid=1994481]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 304ms |
total: | 441ms |
0 / 0 |