> -----Original Message-----
> From: Chris Ernst [mailto:[email protected]]
> Sent: Monday, April 16, 2012 10:55 PM
> To: [email protected]
> Subject: Re: Recreate primary key without dropping foreign keys?
>
> On 04/16/2012 07:02 PM, amador alvarez wrote:
> > How about deferring the FK's while recreating the PK ?
> > or using a temporary parallel table to be pointed by the other tables
> > (FK) and swap it up on the recreation.
>
> Hmm.. Interesting. But it appears that you have to declare the
> foreign
> key as deferrable at creation. Is there any way to set an existing
> foreign key as deferrable?
>
> - Chris
May be this (from the docs) would help:
"ADD table_constraint [ NOT VALID ]
This form adds a new constraint to a table using the same syntax as CREATE
TABLE, plus the option NOT VALID, which is currently only allowed for foreign
key constraints. If the constraint is marked NOT VALID, the potentially-lengthy
initial check to verify that all rows in the table satisfy the constraint is
skipped. The constraint will still be enforced against subsequent inserts or
updates (that is, they'll fail unless there is a matching row in the referenced
table). But the database will not assume that the constraint holds for all rows
in the table, until it is validated by using the VALIDATE CONSTRAINT option."
Using this option you can drop and recreate corresponding FKs in a very short
time, and start using them, while postponing to run "VALIDATE CONSTRAINT" for
later.
It's similar to Oracle's adding FK with "NOCHECK" option, but if IRC there is
no need to run "VALIDATE CONSTRAINT" later.
Regards,
Igor Neyman
--
Sent via pgsql-admin mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin