Re: How to drop a NOT NULL column constraint?

From: Ed Loehr <eloehr(at)austin(dot)rr(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pggeneral <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to drop a NOT NULL column constraint?
Date: 2001-01-02 18:45:48
Message-ID: 3A5221DC.AFD3AA4F@austin.rr.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Tom Lane wrote:
>
> Ed Loehr <eloehr(at)austin(dot)rr(dot)com> writes:
> > I need to alter the table to get rid of the "NOT NULL" constraint on the
> > 'id' column. Can I do this using ALTER TABLE?
>
> There isn't an ALTER TABLE variant for this at the moment, but you can
> do it the hard way: reach in and change the attnotnull boolean in the
> column's pg_attribute row. The actual update would only require
>
> UPDATE pg_attribute SET attnotnull = 'f' WHERE
> attname = 'id' AND attrelid = whatever...
>
> but I don't believe this will be noticed automatically by running
> backends. I think a VACUUM on your table afterwards would be sufficient
> to force the backends to notice the change.

Thanks. That's nice and easy. For posterity, here's the command I used:

UPDATE pg_attribute SET attnotnull = 'f'
FROM pg_class c
WHERE attname = 'id'
AND attrelid = c.oid
AND c.relkind = 'r'
AND c.relname = 'foo';

(not sure the 'relkind' predicate is necessary).

Regards,
Ed Loehr

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Mihail Marinov 2001-01-02 19:56:28 cyrillic and sort order (ORDER BY)
Previous Message Tom Lane 2001-01-02 18:04:23 Re: How to drop a NOT NULL column constraint?