Re: Constants in the foreighn key constraints - Mailing list pgsql-general

From aleksey ksenzov
Subject Re: Constants in the foreighn key constraints
Date
Msg-id CAB5pSh5tBPCRXHaJUrUpYXw_6HxwUhFY98C7OsP8VOFjyYPO-g@mail.gmail.com
Whole thread Raw
In response to Re: Constants in the foreighn key constraints  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Hi team. Thanks for the information. 
Looks like there're some architectural limitations for such foreign keys. 
Also thanks for the suggestions on how to make it behaving like I want on current postgres version.

On Sat, 23 Nov 2019, 19:11 Tom Lane, <tgl@sss.pgh.pa.us> wrote:
Adrian Klaver <adrian.klaver@aklaver.com> writes:
> Please reply to list also.
> Ccing list.

> On 11/22/19 11:36 PM, aleksey ksenzov wrote:
>> While I understand I can do everything with triggers/functions, for me
>> it looks like a good idea to have possibility to use constants in
>> constraints, so it would be very nice if postgres community could add
>> this functionality in the nearest releases.

It seems quite unlikely to me that we'd add such a thing.  It'd be
a weird wart on the foreign-key feature.  Notable problems:

* How would it interact with referential actions, notably
ON UPDATE CASCADE, ON UPDATE/DELETE SET NULL, ON UPDATE/DELETE SET DEFAULT?
I guess you could disallow those options for such a foreign key,
but anytime you have a feature that's that non-orthogonal with
existing ones, you have to ask yourself if you've designed it right.

* Such FKs couldn't be displayed in the information_schema views,
at least not without violating the letter and spirit of the SQL spec.
We already have some cases of constraints that can't be shown in
information_schema, but that's not the sort of wart I want more of.

BTW, it seems to me that you can get the same behavior with existing
features: make a regular multicolumn foreign key constraint, and then
add a CHECK constraint restricting what value one of the referencing
columns can have.  Yeah, this requires useless storage of a column
that will only ever have one value.  I think that's an okay limitation
for a niche use-case.  It also generalizes more easily to cases where
there's more than exactly one allowed value for a referencing column.

                        regards, tom lane

pgsql-general by date:

Previous
From: Mimiko
Date:
Subject: Re: Constants in the foreighn key constraints
Next
From: Jill Jade
Date:
Subject: Pgadmin 4 schema visibility