On 04/17/2012 07:43 AM, Igor Neyman wrote:
>> -----Original Message-----
>> From: Chris Ernst [mailto:cer...@zvelo.com]
>> Sent: Monday, April 16, 2012 10:55 PM
>> To: pgsql-admin@postgresql.org
>> 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.

Hi Igor,

Oooooo... I like the sound of this.   I'll give this a shot in the test
environment and report back my findings.

Thanks a bunch!

        - Chris



-- 
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin

Reply via email to