2012-01-18 85 views
0

我有一個數據傳輸工具,可以將信息從一個數據庫傳輸到另一個數據庫。每小時它將在表中的所有行上發佈UPDATE。我已經有了一個INSERT觸發器來將這個表中的數據轉儲到許多其他表中。我添加了一個UPDATE觸發器來編輯其他表,但是這使得額外的處理使得整個UPDATE處理運行緩慢。MySQL:比較整行

我想將UPDATE觸發器的主體封裝在比較舊行和新行的IF語句中,並在沒有任何更改的情況下跳過處理。是否可以將整行與另一行進行比較,如下所示?

IF new = old THEN ... 

或者除了單獨檢查每一列外沒有別的選擇嗎?

+0

您可以嘗試使用來自http://stackoverflow.com/questions/6296313/mysql-trigger-after-update-only-if-row-has-changed(時間戳列)的解決方法, – a1ex07 2012-01-18 21:05:50

回答

0

如果速度是這裏的問題,我會保存上次編輯時間或校驗和的時間戳。

採用後一種方式,如果你有三排ABC一個表,我會修改這個方案還包括一個新行,cksum

每當您插入內容時,您都會在cksum插入使用快速散列算法生成的值,例如MD5。該校驗可以像

checksum = MD5(A + B + C); 

這樣,每當有插入的東西,你只會有與cksum場比較。

0

很遺憾,不,你需要單獨比較每一列。可能不是你所希望的答案。