2017-08-01 18 views
2

我在PostgreSQL 9.5創建一個表,其中id是主鍵。雖然在表中插入行,如果有人試圖插入重複ID,我希望它會被忽略,而不是提高例外。有沒有什麼辦法可以在創建表的時候設置它,重複的條目會被忽略。如何設置忽略PostgreSQL中重複鍵而表創作本身

有很多技術來解決重複插入問題,同時編寫插入查詢,即使用ON CONFLICT DO NOTHING,或使用WHERE EXISTS子句等等。但我想在表創建結束時處理這個,以便寫入插入查詢的人doesn'不需要打擾任何事情。

創建規則是可能的解決方案之一。還有其他可能的解決方案嗎也許是這樣的:

`CREATE TABLE dbo.foo (bar int PRIMARY KEY WITH (FILLFACTOR=90, IGNORE_DUP_KEY = ON))` 

雖然確切地說這個聲明不適用於我的機器上的Postgresql 9.5。

+0

AFAIK,有沒有這樣的可能性。我不認爲我會喜歡的人或進程插入的數據不以任何方式通知時,其數據被簡單地忽略或丟棄。 – joanolo

回答

1

插入前添加一個觸發器或插入規則做,而不是 - 否則必須通過插入查詢處理。兩種解決方案都需要每個插件上的更多資源。

使用帶參數的插入,將重複檢查功能,使最終用戶將使用功能,而不是INSERT聲明的替代方式。

WHERE EXISTS子查詢是不是原子順便說一句 - 所以你仍然可以檢查後有異常......

9.5 ON CONFLICT DO NOTHING是最好的解決辦法還是