1
有沒有辦法保存,暫時更改,然後恢復變量的值
psql
ON_ERROR_STOP
?如何保存和恢復ON_ERROR_STOP的值?
基本上,我想有一個psql
腳本下面的「道德等價物」:
save_on_error_stop=ON_ERROR_STOP
\unset ON_ERROR_STOP
ALTER TABLE foo DROP COLUMN bar; -- (for example)
\set ON_ERROR_STOP save_on_error_stop
ALTER TABLE foo ADD COLUMN bar;
問題的關鍵是,在年底'\set'
命令實際上不會設置ON_ERROR_STOP
除非它是之前設置的。
我想避免'ADD COLUMN'上只有'columns already exists'錯誤,但是用\ \ unset''' \ set'對括起這個命令會使每個*非致命錯誤都變得沉默,太多了。我發佈的方法可以更有選擇性地避免「列已存在」錯誤。這並不完美:它依賴於'DROP COLUMN'行成功的隱含假設,或者'列不存在'失敗而失敗,或者由於條件導致「ADD COLUMN」失敗而失敗。 ... – kjo
...這些案例幾乎可以肯定不能涵蓋所有可能性,但它們涵蓋了我的代碼將面臨的最常見情況。 – kjo