Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta)

From: Hannu Krosing <hannu(at)tm(dot)ee>
To: Shridhar Daithankar <shridhar_daithankar(at)persistent(dot)co(dot)in>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta)
Date: 2003-09-29 12:23:26
Message-ID: 1064838206.2645.5.camel@fuji.krosing.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

Shridhar Daithankar kirjutas E, 29.09.2003 kell 13:34:
> On Monday 29 September 2003 15:58, Christopher Kings-Lynne wrote:
> > >>So a db designer made a bloody mistake.
> > >>The problem is there's no easy way to find out what's missing.
> > >>I'd really like EXPLAIN to display all subsequent triggered queries
> > >>also, to see the full scans caused by missing indexes.
> > >
> > > It could probably be doable for EXPLAIN ANALYZE (by actually tracing
> > > execution), but then you will see really _all_ queries, i.e. for a 1000
> > > row update you would see 1 UPDATE query and 1000 fk checks ...
> > >
> > > OTOH, you probably can get that already from logs with right logging
> > > parameters.
> >
> > Actually - it shouldn't be too hard to write a query that returns all
> > unindexed foreign keys, surely?
>
> Correct me if I am wrong but I remember postgresql throwing error that foreign
> key field was not unique in foreign table. Obviously it can not detect that
> without an index. Either primary key or unique constraint would need an
> index.
>
> What am I missing here?
>
>
> IOW, how do I exactly create foreign keys without an index?

hannu=# create table pkt(i int primary key);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
'pkt_pkey' for table 'pkt'
CREATE TABLE
hannu=# create table fkt(j int references pkt);
NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY
check(s)
CREATE TABLE
hannu=#

now the *foreygn key* column (fkt.j) is without index. As foreign keys
are enforced both ways, this can be a problem when changing table pkt or
bulk creating FK's on big tables.

----------------
Hannu

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Sven Schwyn 2003-09-29 12:25:34 Re: Modification Dates
Previous Message Bjørn T Johansen 2003-09-29 11:49:16 Re: Time problem again?

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruno Wolff III 2003-09-29 13:20:07 Re: pg_dump bug in 7.4
Previous Message Nigel J. Andrews 2003-09-29 11:47:11 Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta)