On Mon, Oct 25, 2010 at 15:11, Peter Eisentraut
<peter_e@gmx.net> wrote:
Example #4: PK is period, FK is timestamp. FK must be contained in some
PK period.
CREATE TABLE pk (a period PRIMARY KEY, ...);
CREATE TABLE fk (x timestamp REFERENCES pk (a), ...);
As above, we can probably arrange the operator knowledge to make these
checks. But I think additionally, you'd need an exclusion constraint on
the PK side to ensure nonoverlapping arrays/periods so that on
update/delete restrict as well as cascading deletes work.
Additional interesting examples involve IP network containment using
inet/cidr or ip4/ip4r. There, you'd probably need additional syntax to
tell the system explicitly which operators to use.
There are a large number of use-cases for this type of foreign key with geometry ( PostGIS ) types as well. Point references Area or Line, Area references Area, etc.