Re: Can I do anything to prevent " auto rollback in a transaction when an error occurs "

From: Chris Gamache <cgg007(at)yahoo(dot)com>
To: pgsql-odbc(at)postgresql(dot)org
Subject: Re: Can I do anything to prevent " auto rollback in a transaction when an error occurs "
Date: 2003-03-21 13:51:06
Message-ID: 20030321135106.68829.qmail@web13804.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

There's no reason to go breaking transactions when you can SQL around this
problem. The whole point of transactions are to rollback on error! :)

Here's one way around it...

-- first independant transaction
BEGIN;
insert t1 values(1);
COMMIT;
-- second independant transaction
BEGIN;
delete from t2
COMMIT;
-- third independant transaction
BEGIN;
insert t1 values(2);
COMMIT;

Here's another way around it

-- try to create the table
-- if it exists transaction will rollback
BEGIN;
create table t2 (myval int4);
COMMIT;

-- this transaction will commit now.
BEGIN;
insert t1 values(1);
delete from t2
insert t1 values(2);
COMMIT;

You might even create a function called deleteallifexists('tablename') and have
it check the pg_tables.tablename field for the table in question, and if it
exists, then do a delete.

CG

--- Wayne Armstrong <wdarmst(at)bacchus(dot)com(dot)au> wrote:
> ** Reply to message from "junzeng" <junzeng(at)netease(dot)com> on Fri, 21 Mar 2003
> 11:00:39 +0800
>
> Hi,
> If you set the dissalow premature option in the odbc driver it can reduce
> the
> risk of this - but it still does happen and it's extremely dangerous :(.
> I have hacked the odbc driver (for the 7.72.0.5 level) to work with
> visualage
> smalltalk, and have removed the rollback on error with no obvious bad side
> effects. (there probably are some though).
>
> Regards,
> Wayne
>
> > In a transaction , if a sql command invite an error , all commands before
> this
> > command will be rollbacked , and the transaction reset and restart.
> > For example:
> >
> > BEGIN
> > insert t1 values(1);
> > delete from t2
> > insert t1 values(2);
> > commit
> >
> > if table t2 doesn't exist , "delete from t2" invites an error , and the
> insert will be rollbacked .
> >
> > How can I prevent the rollback even when an error occurs ? Thanks
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html

__________________________________________________
Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
http://platinum.yahoo.com

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message Hiroshi Inoue 2003-03-21 15:50:59 Re: password leak in mylog thru win odbc
Previous Message pg 2003-03-21 05:48:47 Re: password leak in mylog thru win odbc