Re: ALTER TABLE & NOT NULL

Поиск
Список
Период
Сортировка
От Joe Conway
Тема Re: ALTER TABLE & NOT NULL
Дата
Msg-id 3CAF68FB.2030802@joeconway.com
обсуждение исходный текст
Ответ на Re: ALTER TABLE & NOT NULL  ("Thomas T. Thai" <tom@minnesota.com>)
Ответы Re: ALTER TABLE & NOT NULL  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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


В списке pgsql-general по дате отправления:

Предыдущее
От: "Thomas T. Thai"
Дата:
Сообщение: Re: ALTER TABLE & NOT NULL
Следующее
От: Tom Lane
Дата:
Сообщение: Re: ALTER TABLE & NOT NULL