Re: ALTER TABLE & NOT NULL

From: Joe Conway <mail(at)joeconway(dot)com>
To: "Thomas T(dot) Thai" <tom(at)minnesota(dot)com>
Cc: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: ALTER TABLE & NOT NULL
Date: 2002-04-06 21:30:35
Message-ID: 3CAF68FB.2030802@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thomas T. Thai wrote:
>>>
>>
>>I think you have to add a table constraint to do that. Something like:
>>
>>ALTER TABLE auth_users ADD CONSTRAINT auth_users_email CHECK (email is
>>not null);
>
>
> is this also what happens at the time of table creation when one specifies
> that a column is to be NOT NULL?

Not quite the same, but the net effect is. To illustrate, I created 2
tables foobar1 and foobar2. foobar2 had the constraint added after
creation, foobar1 was created with the f1 column set to not null. Here's
what it looks like from psql:

test=# \d foobar1
Table "foobar1"
Column | Type | Modifiers
--------+---------+-----------
f1 | integer | not null

test=# \d foobar2
Table "foobar2"
Column | Type | Modifiers
--------+---------+-----------
f1 | integer |
Check constraints: "foobar2_f1" (f1 IS NOT NULL)

I think I remember some discussion around making a way to add a not null
modifier, but I don't believe it can be done today. Hopefully someone
will correct me if I'm wrong here.

(Except, maybe by hacking the system tables directly - it seems to work
for me, but that's always a risky proposition. Make sure you update the
field first to fill in any NULLs with some default value, or you won't
be able to UPDATE those rows afterward).

Joe

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2002-04-07 01:52:04 Re: ALTER TABLE & NOT NULL
Previous Message Thomas T. Thai 2002-04-06 20:43:23 Re: ALTER TABLE & NOT NULL