Converting old FK definitions to better ones - Mailing list pgsql-general

From Ken Williams
Subject Converting old FK definitions to better ones
Date
Msg-id 28664CD6-7509-11D7-90B2-003065F6D85A@mathforum.org
Whole thread Raw
List pgsql-general
Hi,

I'm using a database that was recently upgraded from 7.1 to 7.3.2, and
I think some of the data definition is leftover from before that.  For
instance, there are no PRIMARY KEY columns defined, they're all just
UNIQUE indexes on an 'id' column.

To bring things more up to date (so I can use tools that depend on
sensing the relational structure of the database), I'm doing things
like this:

  ALTER TABLE foo ADD PRIMARY KEY (id);
  ALTER TABLE foo DROP CONSTRAINT foo_id_key;

It's a little more complicated than that, though, because often the
'id' column is referenced from another table, so I need to go update
that other table's references before I can drop the UNIQUE constraint.
And that's the part I don't quite know how to do.  If I have a table
like this:

# \d title
                              Table "public.title"
    Column    |     Type     |                    Modifiers
-------------+--------------
+--------------------------------------------------
  id          | integer      | not null default
nextval('"title_id_seq"'::text)
  object_id   | integer      | not null
  title       | text         | not null
Indexes: title_pkey primary key btree (id)
Foreign Key constraints: $1 FOREIGN KEY (object_id) REFERENCES
object(id) ON UPDATE NO ACTION ON DELETE NO ACTION
Triggers: title_create_tr,
           title_update_tr

what can I do to make the FOREIGN KEY here reference the PRIMARY KEY in
the "object" table?  Or is there some simpler way to handle this
conversion?

  -Ken


pgsql-general by date:

Previous
From: Jim_Garrett@bd.com
Date:
Subject: "validating" open-source software
Next
From: P G
Date:
Subject: Next PostgreSQL release?