Re: Conditionally altering tables

From: "Mike G(dot)" <mike(at)thegodshalls(dot)com>
To: Colin McGuigan <cmcguigan(at)earthcomber(dot)com>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: Conditionally altering tables
Date: 2005-01-11 03:46:53
Message-ID: 20050111034653.GA22284@thegodshalls.thegodshalls
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Yes,

Query pg_attribute table / catalog to see if it exists.

See http://www.postgresql.org/docs/7.4/interactive/catalog-pg-attribute.html

HTH

Mike

On Mon, Jan 10, 2005 at 05:07:23PM -0600, Colin McGuigan wrote:
> Coming from Microsoft SQL Server here...
>
> Is there a way to write a script so that it will make required schema
> changes, only if they haven't already been done?
>
> Eg, I have a script that should add a NewField field to MyTable, as so:
>
> ALTER TABLE MyTable ADD COLUMN NewField integer NULL
>
> This works fine the first time it runs, but if I run this script against
> the database again, I get a message saying that NewField already exists,
> and the script errors out. In MSSQL, I could write something like:
>
> IF NOT EXISTS (SELECT * FROM sysobjects so INNER JOIN syscolumns sc ON
> so.id = sc.id WHERE so.Name = 'MyTable' and sc.Name = 'NewField) ALTER
> TABLE MyTable ADD COLUMN NewField integer NULL

>
> And it would be fine. Is there something similar I could do in Postgres
> without having to write individual stored procedures for each one?
>
> --Colin McGuigan
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message KÖPFERL Robert 2005-01-11 11:15:35 Major Problems with pg_dump
Previous Message Colin McGuigan 2005-01-10 23:07:23 Conditionally altering tables