From: | Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com> |
---|---|
To: | Andrew Sullivan <ajs(at)crankycanuck(dot)ca> |
Cc: | Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>, Tyler MacDonald <tyler(at)yi(dot)org>, Jochen Wiedmann <jochen(dot)wiedmann(at)gmail(dot)com>, Paul DuBois <paul(at)snake(dot)net>, dbi-users(at)perl(dot)org, perl(at)lists(dot)mysql(dot)com, pgsql-general(at)postgresql(dot)org |
Subject: | Re: undefined behaviour for sub-transactions? |
Date: | 2005-11-30 23:35:55 |
Message-ID: | 20051130233555.GA13698@timac.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, Nov 30, 2005 at 04:19:18PM -0500, Andrew Sullivan wrote:
> On Tue, Nov 29, 2005 at 07:44:05PM +0000, Tim Bunce wrote:
> > On Tue, Nov 29, 2005 at 10:50:01AM -0800, Tyler MacDonald wrote:
> > > PostgreSQL, doing a SELECT on a table that doesn't exist poisons the rest of
> > > the transaction, whereas under MySQL and SQLite2 the transaction is allowed
> > > to continue.
> >
> > PostgreSQL is non-standard (and inconvenient) in this respect.
>
> The inconvenience I'll grant, but the non-standard claim I think
> needs some justification. When the database encounters an error in a
> transaction, it is supposed to report an error. An error in a
> transaction causes the whole transaction to fail: that's what the
> atomicity rule of ACID means, I think.
The fact that an individual statement has failed and returned an error
(such as a duplicate key on insert) does not mean that the whole
transaction has failed (ie been implicitly rolled back).
The application may choose to explicitly rollback after it is informed
that a statement has failed, or it could try an alternative action.
I believe that's the case for Oracle, DB2, and Ingres (showing my age)
but I don't have standards docs to hand - nor the time to read them :)
No doubt someone will quote the relevant parts. (And no doubt the
relevant parts will say "it depends" :)
Tim.
> I actually am sort of
> unconvinced that SQLite's transactions are real ones -- I just did
> some playing around with it, and it seems that any error allows you
> to commit anyway. Certainly, MySQL's support of transactions is
> occasionally pretty dodgy, unless you use the strict mode.
>
> But it's worth knowing that in Pg 8.1 and later, you can wrap such
> things in a subtransaction and get out of it that way.
>
> A
>
> --
> Andrew Sullivan | ajs(at)crankycanuck(dot)ca
> I remember when computers were frustrating because they *did* exactly what
> you told them to. That actually seems sort of quaint now.
> --J.D. Baldwin
From | Date | Subject | |
---|---|---|---|
Next Message | Jim C. Nasby | 2005-12-01 00:59:54 | Re: Finding uniques across a big join |
Previous Message | Scott Marlowe | 2005-11-30 22:42:26 | Re: Finding uniques across a big join |