Re: How to create unique constraint on NULL columns

From: "Andrus" <eetasoft(at)online(dot)ee>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: How to create unique constraint on NULL columns
Date: 2005-07-15 15:26:43
Message-ID: db8kk9$27nv$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

>> How to create constraint so that NULL values are treated equal and second
>> insert is rejected ?
>
> Rethink your data design --- this behavior is required by the SQL
> standard.

I have a table of users permissions by departments

CREATE TABLE permission (
id serial,
user_id CHAR(10) NOT NULL REFERENCES user,
permission_id CHAR(10) NOT NULL REFERENCES privilege,
department_id CHAR(10) REFERENCES department ,
UNIQUE ( user_id, permission_id, department_id ) )

permission_id is a permission name: Invoice, Waybill etc.

department _id is a code of department whose documents user is authorized to
access.

if department _id is NULL, user has access to all departments data.

By this design it is meaningless to have two records with same user_id and
permission_id both having department_id NULL

So I want that Postgres does not allow to insert them.

How I should rethink this data design to be implemented in CREATE TABLE
statement ?

Andrus.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Janning Vygen 2005-07-15 15:32:47 PLPGSQL how to get transaction isolation level info
Previous Message Greg Patnude 2005-07-15 15:26:14 Re: Transparent encryption in PostgreSQL?