2012-04-12 74 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