Re: Add a NOT NULL column with default only during add - Mailing list pgsql-general

From BladeOfLight16
Subject Re: Add a NOT NULL column with default only during add
Date
Msg-id CA+=1U=XXMHdZVtEuBPJRt3f=J7AssiJeGUoteXeqWezJsEnW4g@mail.gmail.com
Whole thread Raw
In response to Re: Add a NOT NULL column with default only during add  (Richard Broersma <richard.broersma@gmail.com>)
Responses Re: Add a NOT NULL column with default only during add  (Adrian Klaver <adrian.klaver@gmail.com>)
List pgsql-general
On Thu, Aug 1, 2013 at 7:10 PM, Richard Broersma <richard.broersma@gmail.com> wrote:
After you add a column to your table, you can latter *alter* this column to add, change, or remove the default expression.  There's no need add temporary columns to manage this kind of change.  In fact, all of the DDL that you've described can be achieved in one SQL command.

I think there has been a misunderstanding. I was describing the use of "add column with default" and "drop default" commands; please see my SQL Fiddle. It's only 2 ALTER commands; it doesn't use any temporary columns. It does use a temporary constraint, but not a temporary column.

I'm not clear how you could do this in a single command. Are you suggesting I could do something like this?

ALTER TABLE x
ADD COLUMN data2 VARCHAR(10) NOT NULL DEFAULT 'foo',
ALTER COLUMN data2 DROP DEFAULT;

At least in the 9.2.4 SQL Fiddle uses, that fails with this error: ERROR: column "data2" of relation "x" does not exist. Has something changed in 9.3, or am I misreading you? A sample command of what you're suggesting might be helpful. (Doesn't have to be perfect syntax or anything; just to give me the gist.)

Thank you.

pgsql-general by date:

Previous
From: Richard Broersma
Date:
Subject: Re: Add a NOT NULL column with default only during add
Next
From: BladeOfLight16
Date:
Subject: Re: demystifying nested loop vs. merge join query plan choice