更改表列错误添加2列

时间:2012-04-12 11:43:51

标签: postgresql

数据库:POSTGRESQL

我有一个表location_type,其中包含2列id,name。我想删除列名并添加2个其他列:county,city。但是我得到错误,我无法弄清楚为什么。 这就是我试过的:

ALTER TABLE location_type
DROP COLUMN name;

ALTER TABLE location_type
ADD (county character varying(255) NOT NULL,
     city character varying(255) NOT NULL);

也许有人能看出我做错了什么。任何建议表示赞赏。感谢。

3 个答案:

答案 0 :(得分:5)

你的语法错了。试试这个 [Doc]

ALTER TABLE location_type
    ADD county character varying(255) NOT NULL,
    ADD city character varying(255) NOT NULL;

答案 1 :(得分:3)

试试这个

ALTER TABLE location_type DROP COLUMN name;
ALTER TABLE location_type ADD county character varying(255) NOT NULL;
ALTER TABLE location_type ADD city character varying(255) NOT NULL;

ALTER TABLE location_type 
    DROP COLUMN name,
    ADD county character varying(255) NOT NULL,
    ADD city character varying(255) NOT NULL;

检查manual page

答案 2 :(得分:1)

除了@Marco和@Erkan已经清理的内容之外:

如果您的表已填充(包含行),则无法添加NOT NULL没有DEFAULT子句的列。添加NULL值的新行除非您提供不同的DEFAULT - 因此与约束相矛盾。

在旧版本的PostgreSQL(版本8.0之前)中,您无法将DEFAULT子句用于新列。您必须添加该列,填充该列并然后将其设置为NOT NULL