Thread: Changing column modifiers?

Changing column modifiers?

From
Tim Boring
Date:
Can you change a column modifier after you've created the table?  For
example, I have a table called "authors" with the following columns:
authorid, authorfirstname, authorlastname, authormi, statecode, country,
born, deceased.

When I created the table, I forgot to make the "authorfirstname" and
"authorlastname" columns NOT NULL.  I've looked at ALTER TABLE but I
don't see a way to use it to add NOT NULL...maybe I'm just missing the
obvious?

Any help/suggestions are appreciated.

Thanks,
Tim




Re: Changing column modifiers?

From
Arne Weiner
Date:
It seems that it is not possible to alter column constraints and
table constraints do not include NOT NUL.
But you can use CHECK as workaround:

    ALTER TABLE authors ADD CHECK (NOT authorfirstname = NULL);

Arne.

Tim Boring wrote:
>
> Can you change a column modifier after you've created the table?  For
> example, I have a table called "authors" with the following columns:
> authorid, authorfirstname, authorlastname, authormi, statecode, country,
> born, deceased.
>
> When I created the table, I forgot to make the "authorfirstname" and
> "authorlastname" columns NOT NULL.  I've looked at ALTER TABLE but I
> don't see a way to use it to add NOT NULL...maybe I'm just missing the
> obvious?
>
> Any help/suggestions are appreciated.
>
> Thanks,
> Tim
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html

Re: Changing column modifiers?

From
"Henshall, Stuart - WCP"
Date:
ALTER TABLE authors ADD CHECK (NOT authorfirstname = NULL);
Should that be:
ALTER TABLE authors ADD CHECK (NOT authorfirstname IS NULL);
?
Anyway, how about something like the following:
UPDATE pg_attribute SET attnotnull='t' WHERE attname='field_name' AND
attrelid in (SELECT pg_class.oid FROM pg_class WHERE relkind='r' AND
relname='table_name');
Where field_name is the field name and table_name is the table name.
Hope this helps,
- Stuart

> -----Original Message-----
> From:    Arne Weiner [SMTP:aswr@gmx.de]
> Sent:    Monday, September 10, 2001 10:06 AM
> To:    pgsql-admin@postgresql.org
> Subject:    Re: Changing column modifiers?
>
>
> It seems that it is not possible to alter column constraints and
> table constraints do not include NOT NUL.
> But you can use CHECK as workaround:
>
>     ALTER TABLE authors ADD CHECK (NOT authorfirstname = NULL);
>
> Arne.
>
> Tim Boring wrote:
> >
> > Can you change a column modifier after you've created the table?  For
> > example, I have a table called "authors" with the following columns:
> > authorid, authorfirstname, authorlastname, authormi, statecode, country,
> > born, deceased.
> >
> > When I created the table, I forgot to make the "authorfirstname" and
> > "authorlastname" columns NOT NULL.  I've looked at ALTER TABLE but I
> > don't see a way to use it to add NOT NULL...maybe I'm just missing the
> > obvious?
> >
> > Any help/suggestions are appreciated.
> >
> > Thanks,
> > Tim
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 5: Have you checked our extensive FAQ?
> >
> > http://www.postgresql.org/users-lounge/docs/faq.html

Re: Changing column modifiers?

From
missive@frontiernet.net (Lee Harr)
Date:
On Mon, 10 Sep 2001 01:25:59 +0000 (UTC), Tim Boring <tboring@insight.rr.com>:
> Can you change a column modifier after you've created the table?  For
> example, I have a table called "authors" with the following columns:
> authorid, authorfirstname, authorlastname, authormi, statecode, country,
> born, deceased.
>
> When I created the table, I forgot to make the "authorfirstname" and
> "authorlastname" columns NOT NULL.  I've looked at ALTER TABLE but I
> don't see a way to use it to add NOT NULL...maybe I'm just missing the
> obvious?
>

How about creating a new table as you like it, then
selecting the data from the old table into the new one
dropping the old table and renaming the new one?

Roundabout, but might be useful.