2011-03-02 56 views
1

我想爲許多表中的每列設置默認值,等於Null。我可以查看information_schema.columns.column_default下的默認約束。當我嘗試運行 update information_schema.columns set column_default = Null where table_name = '[table]' 它會拋出「錯誤:無法更新視圖提示:您需要無條件的ON UPDATE DO INSTEAD規則。」如何在PostgreSQL中將所有列的默認值設置爲null

什麼是最好的方式去做這件事?

回答

1

您需要爲每列運行ALTER TABLE語句。永遠不要嘗試通過操縱系統表來做類似的事情(即使你找到了正確的系統表 - INFORMATION_SCHEMA只包含真實系統表的視圖)

但是你可以根據information_schema中的數據生成所有需要的ALTER TABLE語句觀點:

 
SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' SET DEFAULT NULL;' 
FROM information_schema.columns 
WHERE table_name = 'foo'; 

保存輸出作爲SQL腳本,然後運行該腳本(不要忘了提交更改)

相關問題