2014-02-18 54 views
2

postgresql(9.3.2)可以在添加新列之前檢查列的存在嗎? 我不想創建一個函數來檢查是否存在。添加列如果在Postgresql中不存在

只需簡單地像這樣:

ALTER TABLE IF NOT EXISTS table_name ADD COLUMN column_name data_type; 
+0

這不重複。那篇文章使用FUNCTION(PLPGSQL),我只需要SQL腳本。 – postgreat

+0

我在接受的答案中沒有看到任何功能。 –

+0

也有'EXIST()'你可以用來編寫你的函數的解決方案。 – ckruse

回答

2

所以,沒有這樣的查詢。我應該使用PLPGSQL。

+0

@ThalisKalfigkopoulos:謝謝你的確認 – postgreat

3

你需要寫PLPGSQL自己的存儲過程來檢查表中有此列。爲此,您需要PG_ATTRIBUTE和PG_CLASS表,其中Postgres分別存儲模式元數據,特別是有關列和表的信息。

查詢,其結果,你需要在你的存儲過程,以檢查將是一個連接,如:

SELECT A.ATTNAME FROM PG_ATTRIBUTE A, PG_CLASS C            
WHERE A.ATTRELID = C.OID AND A.ATTNAME = 'column_name_check_if_exists' AND C.relname= 'table_name' ;