Re: Dublicates pairs in a table. - Mailing list pgsql-sql

From Kevin Houle
Subject Re: Dublicates pairs in a table.
Date
Msg-id 3D910CEB.30704@houle.org
Whole thread Raw
In response to Dublicates pairs in a table.  ("Ries van Twisk" <ries@jongert.nl>)
Responses Re: Dublicates pairs in a table.  (Richard Huxton <dev@archonet.com>)
List pgsql-sql
Ries van Twisk wrote:

> I have a small question which I could not clearly find in the postgreSQL
> manual.
> 
> if I create this table and index
> CRAEATE TABLE test (
>     id    SERIAL,
>     c1    VARCHAR(32),
>     c2    VARCHAR(32),
>     c3    VARCHAR(32)
> );
> 
> CREATE UNIQUE INDEX test_idx ON test(id, c1,c2);
> 
> what I try to archive here is that I don't want duplicate pais in my table:
> example
> 
> INSET INTO test (c1,c2) VALUES('a', 'a');    -- Allowed
> INSET INTO test (c1,c2) VALUES('b', 'b');    -- Allowed
> INSET INTO test (c1,c2) VALUES('b', 'c');    -- Allowed
> INSET INTO test (c1,c2) VALUES('a', 'a');    -- Not allowed since we already
> have a duplicate ('a', 'a') pair
> INSET INTO test (c1,c2) VALUES('b', 'c');    -- Not allowed since we already
> have a duplicate ('b', 'c') pair
> 
> etc. etc. I think you get the idea...

I have the same issue with a table that currently holds well
over 600,000 rows. The case you left out is this:
 INSERT INTO test (c1,c2) VALUES('a','c'); INSERT INTO test (c1,c2) VALUES('c','a');

I want that to fail, but I haven't been able to get it to fail
using unique indexes. I presume ordering is significant. Instead,
I am doing a SELECT prior to insert to insure the pair doesn't
already exist. If you've been able to get order-independent
pairs restricted to being unique using indexes, I'd like to know
about it. :-)

Kevin



pgsql-sql by date:

Previous
From: Haller Christoph
Date:
Subject: Re: [GENERAL] CURRENT_TIMESTAMP
Next
From: "Jeroen Olthof"
Date:
Subject: function return multiply rows