2012-04-12 73 views
2

数据库:POSTGRESQL改变表错误添加2列

我有一个表位置类型2列id,名称。我想删除列名并添加2个其他列:县,市。但是,我得到错误,我不明白为什么。 这是我的尝试:

ALTER TABLE location_type 
DROP COLUMN name; 

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

也许有人可以看到我在做什么错。任何建议表示赞赏。谢谢。

+0

你有哪个错误? – Marco 2012-04-12 11:45:36

+0

@Marco语法错误在或接近“(” – Fofole 2012-04-12 11:46:06

回答

5

您的语法错误。试试这个 [Doc]

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

请链接到当前的手册,除非*需要*引用过时的文档[请考虑这一点](http://meta.stackexchange.com/q/108714/169168)。 – 2012-04-12 17:07:32

+0

谢谢Erwin,我会在下次考虑。 – 2012-04-12 18:18:47

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

1

除了什么@Marco和@Erkan已经清理了尝试:

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

在早期版本的PostgreSQL(版本8.0之前)中,不能将DEFAULT子句用于新列。您必须添加列,填充它,然后然后将其设置为NOT NULL

+0

是的,我已经知道这个了,所以这不是问题。 – Fofole 2012-04-13 06:51:10