| 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: | Whole Thread | Raw Message | 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
| 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 |