[nycbug-talk] (OT) Postgres Migration

Bob Ippolito bob at redivi.com
Tue Mar 14 14:08:56 EST 2006


On Mar 14, 2006, at 9:54 AM, Jonathan Vanasco wrote:

> I'm migrating from MySQL to Postgres, which I know a bunch of people
> here use
>
> My schema has 161 tables, and heavy use of foreign key constraints.
> the perl script migration utilities out there do an okay job, and I
> can get by with editing the schema dump from there...
>
> but i've run into this one issue - postgres doesn't like it when i
> add a table w/a constraint check that doesn't exist yet.
>
> right now, i'm recursing backwards, and entering the least dependant
> tables first.

CREATE all of the tables first then add the foreign key constraints  
with ALTER TABLE.

http://www.postgresql.org/docs/8.1/interactive/sql-altertable.html
http://www.postgresql.org/docs/8.1/interactive/sql-createtable.html

> just wondering if anyone knows a way to defer constraint checks
> during a transaction - the only docs i could find let one do that on
> a per table basis in the definition - so it would seem that I'd
> create the table with a defferred check, then edit it to not have the
> constraint.  not fun.

You can only do it on a per constraint basis, and only for foreign  
keys.  Either the docs you found were wrong or you read them  
incorrectly.

You can specify whether they're deferred or not by default when you  
create them, but you can change that at runtime with SET CONSTRAINTS.

http://www.postgresql.org/docs/8.1/interactive/sql-set-constraints.html

-bob




More information about the talk mailing list