tricky CHECK condition

From: Arcady Genkin <a(dot)genkin(at)utoronto(dot)ca>
To: pgsql-general(at)postgresql(dot)org
Subject: tricky CHECK condition
Date: 2000-05-23 04:25:58
Message-ID: 87zophgaeh.fsf@tea.thpoon.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

How could I specify a condition in 'CHECK' constraint for a column to
check that its value must only appear once in *some* rows of a table?
Sort of a local "UNIQUE"... For example, in CDs world:

create table tracks (
-- Unique track identifier
id serial primary key,
-- Which disk the track is from
disk_id int4 references disks (id),
-- Track number in a disk
track_number int2,
check (WHAT I WANT GOES HERE) );

I want to check values of `track_number' to be unique for the
disk. Basically, I want to check that an SQL query

select track_number from tracks T
where T.disk_id=disk_id and T.track_number=track_number;

is empty... Is it possible to run an SQL query in a condition clause?
I looked thru documentation, but couldn't find anything relevant.
--
Arcady Genkin http://www.thpoon.com
Nostalgia isn't what it used to be.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bruce Momjian 2000-05-23 04:35:54 Re: tricky CHECK condition
Previous Message Chris Bitmead 2000-05-23 03:23:59 Re: OO Patch