2012-11-06 15 views
0

問題:我正在尋找一種替代解決方案來更改postgresql中的列定義。Postgresql:如何更改表定義

我願做一些類似於MySQL的解決方案:

ALTER TABLE table_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 

是否有使用更改列類似於我以前描述的方式?有什麼方法可以輕鬆更改postgres中的列定義?

我想對我的例子使用類似的方法,因爲我從代碼構建了alter query。

+0

這是它只是兩個數據庫之間的語法差異。 爲了解決這個問題,您可能需要編寫一個數據庫感知的抽象層,並根據您的數據庫能夠定義使用哪種語法。 – andrefsp

+1

爲什麼不使用'ALTER TABLE ... RENAME COLUMN ...'和'ALTER TABLE ... ALTER COLUMN TYPE ...'? – mantigatos

+0

@mantigatos是的,你是對的。事實是,我正在寫這個抽象層。你說得對,我可以使用你寫的那些修改查詢。我也設法解決了這個問題。首先,我刪除了該列,然後重新添加了新定義。但是,如果有人使用我的解決方案,他可能會意識到該字段中的數據將丟失。在我的情況下,這樣做可以,因爲我正在使用它進行數據庫遷移,並且在db結構修改後添加數據。 –

回答

1

PostgreSQL中沒有直接等價於MySQL的CHANGE COLUMN子句。您需要逐個指定列定義部分。請參閱ALTER TABLE的文檔。幸運的是,您不需要在典型情況下檢測舊定義和新版本之間的差異,如果更改是多餘的,PostgreSQL將忽略它。例如ALTER COLUMN x DROP NOT NULL在列已經可以爲空時仍然可以工作。

相關問題