Re: [ADMIN] unique constraints - Mailing list pgsql-admin

From Ron Watkins
Subject Re: [ADMIN] unique constraints
Date
Msg-id 1c6e01d257b2$5c201f90$14605eb0$@gmail.com
Whole thread Raw
In response to [ADMIN] unique constraints  ("Campbell, Lance" <lance@illinois.edu>)
List pgsql-admin

Because NULL != NULL, therefore you can’t have a unique value for NULL.

 

From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Campbell, Lance
Sent: Friday, December 16, 2016 8:30 AM
To: pgsql-admin@postgresql.org
Subject: [ADMIN] unique constraints

 

PostgreSQL 9.5

 

I have a table:

 

CREATE TABLE test

(

  id integer NOT NULL,

  tag_id integer,

  CONSTRAINT test_id_tag_id_key UNIQUE (id, tag_id)

)

WITH (

  OIDS=FALSE

);

 

I noticed I can insert this into the database:

 

Insert into test (id, tag_id) values(1,null);

Insert into test (id, tag_id) values(1,null);

 

But this does not work:

 

Insert into test (id, tag_id) values(2,1);

Insert into test (id, tag_id) values(2,1); (error occurs)

 

Select * from test;

 

1, null

1, null

2, 1

 

I understand why in the second set of inserts I get an error when trying to insert the same set of values.  But why does the first example work?  I would have thought that it would have only allowed the first insert to work.

 

Thanks,

 

Lance

 

pgsql-admin by date:

Previous
From: "Campbell, Lance"
Date:
Subject: [ADMIN] unique constraints
Next
From: Achilleas Mantzios
Date:
Subject: Re: [ADMIN] unique constraints