2010-10-07 53 views
15

有沒有辦法在postgresql中獲取某一行的哈希碼?在postgresql中查找行的哈希值

我只需要導出一些數據,如果最後一次導出後數據發生了一些變化,最後導出的數據行可以存儲在一個表中,當我需要導出數據時,我可以得到所有數據的散列值以及僅導出具有與上次導出不同的散列值的那些行。

是否有可能實現使用postgresql?

謝謝

回答

29

鑄行文字,並使用MD5進行哈希:

SELECT 
    md5(CAST((f.*)AS text)) 
FROM 
    foo f; 
+4

或者更短'SELECT md5(f :: text)FROM f' – Jelen 2017-03-29 10:10:12

3

另一種方法是設置一個ON INSERT OR UPDATE trigger這將插入當前時間戳到一個last_modified列,然後簡單地查詢基於此列當你的導入過程中運行。

+0

我面對的是我工作的遺留系統上的問題,其中的數據可以來自進口或通過添加/對所有數據編輯頁面和最後修改的列是不可靠的。這就是我正在檢查某種散列技術來檢查是否有任何更改的原因。 – 2010-10-07 06:34:22

+1

通過這種方法,數據庫觸發器將確定並寫入'last_modified'時間 - 而不是將數據放入此表中的客戶端。客戶不會知道這個專欄,也不應該 - 你的數據庫會自己管理它。 – 2010-10-07 14:20:45