数据库: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);
也许有人能看出我做错了什么。任何建议表示赞赏。感谢。
答案 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;
答案 2 :(得分:1)
除了@Marco和@Erkan已经清理的内容之外:
如果您的表已填充(包含行),则无法添加NOT NULL
没有DEFAULT
子句的列。添加NULL
值的新行除非您提供不同的DEFAULT
- 因此与约束相矛盾。
在旧版本的PostgreSQL(版本8.0之前)中,您无法将DEFAULT
子句用于新列。您必须添加该列,填充该列并然后将其设置为NOT NULL
。