2

数据库:POSTGRESQL

我有一个带有 2 列 id、name 的表 location_type。我想删除列名并添加另外 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);

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

4

3 回答 3

5

你的语法是错误的。试试这个[文档]

ALTER TABLE location_type
    ADD county character varying(255) NOT NULL,
    ADD city character varying(255) NOT NULL;
于 2012-04-12T11:47:29.687 回答
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;

检查手册页

于 2012-04-12T11:47:32.330 回答
1

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

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

在旧版本的 PostgreSQL(版本 8.0 之前)中,您不能对DEFAULT新列使用该子句。您必须添加列,填充它,然后设置它NOT NULL

于 2012-04-12T17:18:08.450 回答