Philip Warner <pjw@rhyme.com.au> writes:
> At 00:26 14/10/00 -0400, Tom Lane wrote:
>>> I tried updating pg_attribute & setting attnotnull to 'f' for the field in
>>> question. This seems to have worked. Is it safe?! - is there anything
>>> else I should be aware of?
>>
>> Yup, that should do the trick. Not much magic here...
> Just to confirm - does this mean we have ALTER TABLE ADD CONSTRAINT, but
> not ALTER TABLE DROP CONSTRAINT. If so, should it go on a list somewhere?
No, it just means that NOT NULL constraint is handled via a special
flag attached to the column's pg_attribute entry. More general
constraints are handled with other catalog entries. (I think this
is largely a historical artifact, not necessarily a good idea.)
Another relevant comment is that *removing* a NOT NULL constraint
doesn't pose any risk of creating invalid entries in the table data.
So there's no need to worry about cross-checking.
regards, tom lane