Re: Recreate primary key without dropping foreign keys?

Поиск
Список
Период
Сортировка
От amador alvarez
Тема Re: Recreate primary key without dropping foreign keys?
Дата
Msg-id 4F8DC63E.7000004@d2.com
обсуждение исходный текст
Ответ на Re: Recreate primary key without dropping foreign keys?  (Igor Neyman <ineyman@perceptron.com>)
Список pgsql-admin
Unfortunately I checked out that the deferrable option does not let us
drop the PK (postgres8.4) while remaining FK's , I did not try on the
constraint as NOT VALID  is not supported by postgres8.
So unless you have a 9 release or you get a try on a parallel table, you
have to follow the manual procedure :

Generate new index
drop FK's
Drop PK
Recreate PK swiching to the new index
Recreate FK's

Can you afford a quick temporary user access to the database?




On 04/17/2012 06:43 AM, Igor Neyman wrote:
>> -----Original Message-----
>> From: Chris Ernst [mailto:cernst@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,
whichis currently only allowed for foreign key constraints. If the constraint is marked NOT VALID, the
potentially-lengthyinitial check to verify that all rows in the table satisfy the constraint is skipped. The constraint
willstill be enforced against subsequent inserts or updates (that is, they'll fail unless there is a matching row in
thereferenced table). But the database will not assume that the constraint holds for all rows in the table, until it is
validatedby 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
postponingto 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
>

В списке pgsql-admin по дате отправления:

Предыдущее
От: Igor Neyman
Дата:
Сообщение: Re: Recreate primary key without dropping foreign keys?
Следующее
От: Chris Ernst
Дата:
Сообщение: Re: Recreate primary key without dropping foreign keys?