Re: Conditional INSERT: if not exists

From: "Don Morrison" <donmorrison(at)gmail(dot)com>
To: "Sean Davis" <sdavis2(at)mail(dot)nih(dot)gov>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: Conditional INSERT: if not exists
Date: 2006-08-23 22:25:25
Message-ID: aee6519f0608231525r1cbb2918kb8bb251f300724fc@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

> > isn't a problem. If you need to do this in a transaction, you can
> > simply set savepoints and roll back to the savepoint if an insert fails
> > (and you expected that it could).
>
> Unfortunately, for some reason it does a rollback of the entire outer
> transaction too, not just the nested one. :( Anybody know why?
>
> If I use stored procedures will it be easier?
>

When I try to insert a duplicate row, this generates an IntegrityError
on my unique index, which rolls back my entire transaction, when I
really want it to generate a ROLLBACK TO SAVEPOINT for the most recent
savepoint, so only that insert is ignored. Does anyone know a
configuration trick to get it to do this, or do I have to write a
stored procedure where I explicitly call ROLLBACK TO SAVEPOINT?

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Jasbinder Bali 2006-08-24 05:03:43 Shared Objects (Dynamic loading)
Previous Message Don Morrison 2006-08-23 21:45:10 Re: Conditional INSERT: if not exists