2009-10-02 18 views
2

我試圖通過在一個文件中生成一系列SQL命令來提供psql進行處理,以儘可能延遲。簡而言之,我從外部源(已經完成,通過COPY)加載一系列導入表,然後在最後一步中,刪除/更新/插入記錄到主表中(這在功能上也完成了)。檢測錯誤以決定是回滾還是提交

阻止我成功的唯一因素(並且能夠通過shell腳本中的一系列命令完成所有操作)是這樣一個事實,即有時該操作具有參照完整性錯誤,因此我必須回滾所有內容直到源可以被識別和糾正。

那麼在psql處理的腳本中是否有任何方法知道是否發生錯誤並執行回滾?如果沒有錯誤,提交。

我總是可以通過切換到更高級別的語言來解決問題,打開連接並運行每個語句並檢查錯誤,但這只是所有更多的代碼,如果可能的話我想盡量避免。

回答

2

如果你使用psql裏,你可以使用-1命令行選項,並與啓動文件:

\設置ON_ERROR_STOP

這應該在一個事務中包住整個會話,並在遇到錯誤時立即保釋。

+1

嗯...應該是: \設置ON_ERROR_STOP 不知道從哪裏額外*的是從哪裏來的。 – 2009-10-02 16:17:37

相關問題