Re: ALTER TABLE ... IF EXISTS feature? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: ALTER TABLE ... IF EXISTS feature?
Date
Msg-id 1242.1288989107@sss.pgh.pa.us
Whole thread Raw
In response to Re: ALTER TABLE ... IF EXISTS feature?  (Daniel Farina <drfarina@acm.org>)
Responses Re: ALTER TABLE ... IF EXISTS feature?
List pgsql-hackers
Daniel Farina <drfarina@acm.org> writes:
> On Fri, Nov 5, 2010 at 11:04 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Daniel Farina <drfarina@acm.org> writes:
>>> pg_dump --clean will successfully and silently wipe out a foreign key
>>> right now, should it exist,
>> 
>> No, it will not, because we don't use CASCADE in the drop commands.

> I know it does not use CASCADE, but if I understand it correctly,
> foreign keys are dropped between tables, and then the tables are
> dropped. (effectively a manual cascade)

You're missing the point.  The scenario I'm concerned about is:
source database contained table foo
target database contains table foo, and table bar, andbar has an FK reference to foo

The FK constraint is not known to pg_dump, and therefore there will not
be a DROP CONSTRAINT for it in the dump.  So the DROP on the referenced
table will fail.  The only way we could make it succeed would be to use
CASCADE, which we don't do specifically because this sort of thing seems
quite unsafe.
        regards, tom lane


pgsql-hackers by date:

Previous
From: "David E. Wheeler"
Date:
Subject: Query Plan Columns
Next
From: Andrew Dunstan
Date:
Subject: Re: Query Plan Columns