Re: savepoint improvements

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: savepoint improvements
Дата
Msg-id b42b73150701221106p782b5668vc40672e299f7200a@mail.gmail.com
обсуждение исходный текст
Ответ на Re: savepoint improvements  ("Dawid Kuroczko" <qnex42@gmail.com>)
Ответы Re: savepoint improvements  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
On 1/22/07, Dawid Kuroczko <qnex42@gmail.com> wrote:
> On 1/22/07, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > > The short version is I would like the ability to run some sql commands
> > > and recover the transaction if an error occurs.
> >
> > I'm getting tired of repeating this, but: neither of you have said
> > anything that doesn't appear to me to be handled by ON_ERROR_ROLLBACK.
> > What exactly is lacking in that feature?
>
> I think the problem is with doing something like this:
>
> BEGIN;
> INSERT INTO foo VALUES ('1'); UPDATE status SET updated=now() WHERE tab='foo';
> INSERT INTO bar VALUES ('2'); UPDATE status SET updated=now() WHERE tab='bar';
> INSERT INTO baz VALUES ('3'); UPDATE status SET updated=now() WHERE tab='baz';
> COMMIT;
>
> This will issue three savepoints (if I understand how things wok correctly),

yes

> one for each INSERT+UPDATE block.  This way eiher both of them succeed
> or fail, within one transaction.

i think so...Martijn said it best: you can 'rollback' to, but you
can't 'commit' to.  The 'commit to' would be the arguably much more
useful way of disposing of a savepoint.  But that should be taken up
with sql standards committee :(.

> One solution would be a psql command which
> would fire given command on error condition, like:

yes, psql can handle this. while (IMO) a hack, it addresses the
shortcoming (scripting) specifically not handled by savepoints..

merlin


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Merlin Moncure"
Дата:
Сообщение: Re: savepoint improvements
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: [GENERAL] Autovacuum Improvements