Thread: Ignore unique violations?

Ignore unique violations?

From
"A B"
Date:
Is there any easy way of ignoring unique violations?
I have a table (a integer, b integer, unique (a,b) ) and want to
insert pairs of values for a and b, but I do not want to first select
to see if there is a pair  before inserting.
So can I make postgres ignore any error or exception?

The inserts are placed inside of a transaction and I really don't want
any silly error to abort it.

Re: Ignore unique violations?

From
"A. Kretschmer"
Date:
am  Thu, dem 27.03.2008, um  9:45:33 +0000 mailte A B folgendes:
> Is there any easy way of ignoring unique violations?
> I have a table (a integer, b integer, unique (a,b) ) and want to
> insert pairs of values for a and b, but I do not want to first select
> to see if there is a pair  before inserting.
> So can I make postgres ignore any error or exception?

I hope this link can help you:
http://andreas.scherbaum.la/blog/archives/11-Avoid-Unique-Key-violation.html


Regards, Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

Re: Ignore unique violations?

From
"Richard Broersma"
Date:
On Thu, Mar 27, 2008 at 2:52 AM, A. Kretschmer
<andreas.kretschmer@schollglas.com> wrote:

> am  Thu, dem 27.03.2008, um  9:45:33 +0000 mailte A B folgendes:
>
> > Is there any easy way of ignoring unique violations?
> > I have a table (a integer, b integer, unique (a,b) ) and want to
> > insert pairs of values for a and b, but I do not want to first select
> > to see if there is a pair  before inserting.
> > So can I make postgres ignore any error or exception?
>
> I hope this link can help you:
> http://andreas.scherbaum.la/blog/archives/11-Avoid-Unique-Key-violation.html
>
>

Here is different syntax for the same solution.

         INSERT INTO Table ( a, b )
                SELECT T1.a, T1.b
                   FROM ( VALUES( 1, 2 )) AS T1( a, b )
LEFT OUTER  JOIN Table AS T2
                        ON ( T1.a, T1.b ) = ( T2.a, T2.b )
                 WHERE ( T2.a, T2.b ) IN NULL;



--
Regards,
Richard Broersma Jr.