Thread: adding column with not null constraint

adding column with not null constraint

From
Vivek Khera
Date:
I'm looking to add a column to my database with not null and a default
value:

vk=> alter table msg_owner add column user_optional_fields varchar(255) NOT NULL default '';
ERROR:  Adding columns with defaults is not implemented.       Add the column, then use ALTER TABLE SET DEFAULT.
vk=> alter table msg_owner add column user_optional_fields varchar(255) NOT NULL ;
ERROR:  Adding NOT NULL columns is not implemented.       Add the column, then use ALTER TABLE ADD CONSTRAINT.

Ok, so we can succeed with this:

ALTER TABLE msg_owner ADD COLUMN user_optional_fields VARCHAR(255);
ALTER TABLE msg_owner ALTER user_optional_fields SET DEFAULT '';
UPDATE msg_owner SET user_optional_fields = '';

Now my problem is I cannot find any syntax for ALTER TABLE ADD
CONSTRAINT to put a NOT NULL constraint on a column.  Can someone help
me here?

I'm using Postgres 7.2.1 on FreeBSD 4.6.

Thanks.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Vivek Khera, Ph.D.                Khera Communications, Inc.
Internet: khera@kciLink.com       Rockville, MD       +1-240-453-8497
AIM: vivekkhera Y!: vivek_khera   http://www.khera.org/~vivek/


Re: adding column with not null constraint

From
Date:
Hi Vivek,

In 7.3 there  will be a fully implemented ALTER TABLE command for making
columns null or not null.

Currently you can update 'attnotnull' of pg_attribute system catalog
for the attrelid and attname. use pg_class system catalog for getting
attrelid of a given relation.

Regds
MAllah.

> I'm looking to add a column to my database with not null and a default value:
>
> vk=> alter table msg_owner add column user_optional_fields varchar(255) NOT NULL default '';
> ERROR:  Adding columns with defaults is not implemented.
>        Add the column, then use ALTER TABLE SET DEFAULT.
> vk=> alter table msg_owner add column user_optional_fields varchar(255) NOT NULL ; ERROR:
> Adding NOT NULL columns is not implemented.
>        Add the column, then use ALTER TABLE ADD CONSTRAINT.
>
> Ok, so we can succeed with this:
>
> ALTER TABLE msg_owner ADD COLUMN user_optional_fields VARCHAR(255); ALTER TABLE msg_owner ALTER
> user_optional_fields SET DEFAULT '';
> UPDATE msg_owner SET user_optional_fields = '';
>
> Now my problem is I cannot find any syntax for ALTER TABLE ADD
> CONSTRAINT to put a NOT NULL constraint on a column.  Can someone help me here?
>
> I'm using Postgres 7.2.1 on FreeBSD 4.6.
>
> Thanks.
>
> --
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Vivek Khera, Ph.D.
>         Khera Communications, Inc.
> Internet: khera@kciLink.com       Rockville, MD       +1-240-453-8497 AIM: vivekkhera Y!:
> vivek_khera   http://www.khera.org/~vivek/
>
> ---------------------------(end of broadcast)--------------------------- TIP 5: Have you
> checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html



-----------------------------------------
Get your free web based email at trade-india.com.  "India's Leading B2B eMarketplace.!"
http://www.trade-india.com/




Re: adding column with not null constraint

From
Johannes Lochmann
Date:
On Fri, 2002-10-18 at 22:12, Vivek Khera wrote:
> ALTER TABLE msg_owner ADD COLUMN user_optional_fields VARCHAR(255);
> ALTER TABLE msg_owner ALTER user_optional_fields SET DEFAULT '';
> UPDATE msg_owner SET user_optional_fields = '';
> 
> Now my problem is I cannot find any syntax for ALTER TABLE ADD
> CONSTRAINT to put a NOT NULL constraint on a column.  Can someone help
> me here?

An additional thought to what mallah@trade-india.com said:

BEGIN;

ALTER TABLE msg_owner ADD CONSTRAINT chk_msg_owner_usr_opt_flds_null
CHECK(user_optional_fields IS NOT NULL);

COMMIT;

HTH

Johannes Lochmann