2013-02-16 38 views
2

是否有命令設置一個選項,即使存在錯誤也會導致PostgreSQL腳本繼續運行?有沒有辦法設置一個選項,即使有錯誤也會導致PostgreSQL腳本繼續運行?

例如,有時當我從電子表格中插入大量數據以插入表格時,我使用公式創建INSERT語句,並將語句複製到文件中並執行它們,或者將它們複製到PgAdmin中運行它們。準確性並不總是很重要,我不希望整個過程因爲一些記錄而失敗。

語法錯誤在這裏不是問題,只是由於某些錯誤而失敗的命令,比如嘗試創建已存在的索引或插入重複的記錄。

+0

啓用自動提交 – 2013-02-16 08:36:15

+0

@a_horse_with_no_name這是否適用於任何命令不惜一切,而不僅僅是插入命令? – vfclists 2013-02-16 08:53:48

+0

是的,這適用於所有命令(因爲幾乎Postgres中的每個語句都是事務性的) – 2013-02-16 09:10:25

回答

3

如果使用psql,你想:

\set ON_ERROR_ROLLBACK on 

manual

ON_ERROR_ROLLBACK

啓用時,如果在一個事務塊的聲明產生了錯誤, 錯誤被忽略,交易繼續。在交互時,這種 錯誤僅在交互式會話中被忽略,而不會在讀取 腳本文件時被忽略。當關(默認值),在交易 塊產生一個錯誤的聲明中止整個事務

+0

它通過隱式'SAVEPOINT'工作,所以如果每個事務有多個語句,'ON_ERROR_ROLLBACK'可能會降低性能。 – vyegorov 2013-02-16 14:43:42

+0

是的,ON_ERROR_ROLLBACK的實現並不聰明。我們需要類似Oracle的語句級別回滾。 – Chao 2016-03-22 05:33:35

相關問題