Recreate primary key without dropping foreign keys?

From: Chris Ernst <cernst(at)zvelo(dot)com>
To: pgsql-admin(at)postgresql(dot)org
Subject: Recreate primary key without dropping foreign keys?
Date: 2012-04-16 00:41:05
Message-ID: 4F8B6AA1.1040709@zvelo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-general

Hi all,

In PostgreSQL 9.1.3, I have a few fairly large tables with bloated
primary key indexes. I'm trying to replace them using newly created
unique indexes as outlined in the docs. Something like:

CREATE UNIQUE INDEX CONCURRENTLY dist_id_temp_idx ON distributors (dist_id);
ALTER TABLE distributors DROP CONSTRAINT distributors_pkey,
ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX
dist_id_temp_idx;

However, the initial drop of the primary key constraint fails because
there are a whole bunch of foreign keys depending on it.

I've done some searching and haven't found a workable solution. Is
there any way to swap in the new index for the primary key constraint
without dropping all dependent foreign keys? Or am I pretty much stuck
with dropping and recreating all of the foreign keys?

Thanks in advance.

Chris Ernst
Data Operations Engineer
Zvelo, Inc.
http://zvelo.com/

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Frank Lanitz 2012-04-16 04:57:17 Re: Recreate primary key without dropping foreign keys?
Previous Message Rural Hunter 2012-04-15 05:32:53 Re: invalid byte sequence for encoding "UTF8": 0xf481 - how could this happen?

Browse pgsql-general by date

  From Date Subject
Next Message Frank Lanitz 2012-04-16 04:57:17 Re: Recreate primary key without dropping foreign keys?
Previous Message dlangion 2012-04-16 00:03:42