我們有一個要求,即我們應該有一個在我們系統中的所有項目的副本。最簡單的解釋方法是複製,但忽略刪除語句(INSERT和UPDATE都可以) 這可能嗎?或者更好的問題是解決這類問題的最佳方法是什麼?沒有DELETE語句的Postgresql複製
2
A
回答
1
製作當前數據庫的副本/副本,並通過dblink從當前數據庫到副本使用觸發器。在插入之後和更新之後使用觸發器來插入和更新副本中的數據。
因此,無論何時在當前數據庫中發生行插入/更新,它都會直接反映到副本。
0
我不知道,我完全理解這個問題,但我會盡力幫助:
- 首先(相對於@Sunit) - 我建議避免觸發。觸發器引入額外的開銷並影響性能。
- 我將使用的解決方案(我實際上在我的幾個項目中使用了相似的需求) - 根本不使用DELETE。相反,您可以添加名爲「已刪除」的位(布爾值)列,將其默認值設置爲0(false),而不是刪除將該字段更新爲1(true)的行。您還需要更改其他查詢(SELECT)以包含「WHERE Deleted = 0」之類的內容。
- 另一個選擇是像往常一樣繼續使用DELETE,並允許從主數據庫和副本數據庫中刪除記錄,但配置WAL歸檔並將WAL歸檔文件存儲在某個共享目錄中。這將允許您進行即時恢復,這意味着您可以隨時(即在刪除之前)將其他PostgreSQL實例恢復到羣集狀態。通過這種方式,您將獲得一條已刪除的記錄,但是到達記錄的過程非常複雜。取決於將來檢查刪除的記錄的頻率(也許它們根本沒有被檢查,但只是保存用於即時跟蹤),這種方法也有幫助。
相關問題
- 1. DELETE語句mysqli
- 2. SQL DELETE語句的語法
- 3. 尋找此Select語句的Delete語句
- 4. DELETE語句掛起
- 5. DELETE語句在SQL
- 6. 有沒有辦法用Oracle記錄每條DELETE語句?
- 7. Solr的delete語句錯誤
- 8. DELETE語句上的MySQL LIMIT
- 9. C#中的SQL DELETE語句
- 10. 簡單的DELETE語句沒有工作SQLite中
- 11. MERGE語句中的DELETE子句
- 12. postgresql和Delete語句違反外鍵約束
- 13. 使用複合語句沒有條件語句中的Java
- 14. PostgreSQL的select語句
- 15. PostgreSQL的CASE語句
- 16. Visual Studio沒有運行DELETE命令行語句MYSQL
- 17. 測試(JUnit)SQL DELETE和UPDATE語句沒有提交
- 18. 問題用delete語句
- 19. Oracle 10g多個DELETE語句
- 20. DELETE語句與REFERENCE衝突
- 21. 處理許多delete語句
- 22. DELETE語句從行看重
- 23. SQL DELETE語句刪除Didnt
- 24. DELETE語句SQL連接
- 25. JavaScript DELETE語句。查詢
- 26. 將else語句複製到if語句
- 27. WHERE語句重複列名JOIN - PostgreSQL
- 28. sqlite3的DELETE語句的語法有兩個,其中,列
- 29. 如何使If語句不復制,如果沒有什麼可複製
- 30. PostgreSQL - INSERT INTO語句