Thread: foreign keys not working

foreign keys not working

From
Jeff Wright
Date:
Hi,

I'm trying to set up some fk's on some tables and the sql works with no
errors but the schema display for the table doesn't show the fk's. Is there
something I need to do to enable fk functionality?

Jeff Wright
Sr Internet Applications Developer
Omnichannels.com
Jeff.Wright@Omnichannels.com
(516) 465-1000 x3199


Re: foreign keys not working

From
"Joel Burton"
Date:
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Jeff Wright
> Sent: Tuesday, May 14, 2002 12:22 PM
> To: 'pgsql-general@postgresql.org'
> Subject: [GENERAL] foreign keys not working
>
> I'm trying to set up some fk's on some tables and the sql works with no
> errors but the schema display for the table doesn't show the
> fk's. Is there
> something I need to do to enable fk functionality?

Jeff --

Unfortunately, you don't see the FK's indicated on the schema displays in
psql. In the latest versions of PG, you'll see Triggers listed (which
referential integrity is, a trigger), but that still doesn't tell you which
field is the foreign key to which table.

You can see this information by hacking into the referential integrity
tables yourself.

Try this view:

CREATE VIEW dev_ri
AS
SELECT t.oid as trigoid,
    c.relname as trig_tbl,
    t.tgfoid,
    f.proname as trigfunc,
    t.tgenabled,
    t.tgconstrname,
    c2.relname as const_tbl,
    t.tgdeferrable,
    t.tginitdeferred
    FROM pg_trigger t,
    pg_class c,
    pg_class c2,
    pg_proc f
    WHERE t.tgrelid=c.oid
    AND t.tgconstrrelid=c2.oid
    AND tgfoid=f.oid
    AND tgname ~ '^RI_'
    ORDER BY t.oid;

This will show you all fk's in your database.

Details on this can be found at
http://techdocs.postgresql.org/techdocs/hackingreferentialintegrity.php

HTH.

Joel BURTON | joel@joelburton.com | joelburton.com | aim: wjoelburton
Knowledge Management & Technology Consultant