Thread: Error message for FK referencing deferrable unique/PK

Error message for FK referencing deferrable unique/PK

From
Dean Rasheed
Date:
While looking at this report

http://archives.postgresql.org/pgsql-bugs/2009-08/msg00083.php

I spotted another error message which could use improvement:

CREATE TABLE foo(a int PRIMARY KEY DEFERRABLE);
CREATE TABLE bar(a int REFERENCES foo(a));

ERROR:  there is no unique constraint matching given keys for
referenced table "foo"

Whereas if you define the FK slightly differently so that it goes
through transformFkeyGetPrimaryKey() instead, you get a much better
error message:

CREATE TABLE bar(a int REFERENCES foo);

ERROR:  cannot use a deferrable primary key for referenced table "foo"

The attached patch to transformFkeyCheckAttrs() makes the former case
generate a similar error to the latter.

 - Dean

Attachment

Re: Error message for FK referencing deferrable unique/PK

From
Tom Lane
Date:
Dean Rasheed <dean.a.rasheed@googlemail.com> writes:
> I spotted another error message which could use improvement:
> ...
> The attached patch to transformFkeyCheckAttrs() makes the former case
> generate a similar error to the latter.

Ah, you caught me being lazy ;-).  I had actually considered doing this
while reviewing the deferrable-uniqueness patch, but ran out of energy
and did the one-liner change instead.  Patch applied.
        regards, tom lane