使用時間戳優化 MySQL 觸發器來偵測實際資料修改
挑戰:
即使沒有實際的資料更改,MySQL 的「AFTER UPDATE」觸發器也會觸發,從而導致不必要的執行和效能瓶頸。
解:
使用時間戳提供了一個有效的解決方案。 MySQL 的 TIMESTAMP
資料類型會在每次修改行時自動更新目前時間。 透過比較觸發器內的 NEW
和 OLD
時間戳值,您可以精確識別真正的資料變更。
範例程式碼:
此觸發器利用時間戳記僅在實際資料變更時執行:
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
機轉:
NEW
:代表更新後的行的新值。 OLD
:表示更新之前行的值。 NEW.ts != OLD.ts
:此比較可確保觸發器僅在時間戳不同時激活,表示存在真實的資料變更。 好處:
重要注意事項:
TIMESTAMP
欄位僅在資料變更時更新。 如果時間戳可以獨立修改,這種方法可能不可靠。 以上是時間戳記如何最佳化 MySQL 觸發器以僅偵測真實資料變更?的詳細內容。更多資訊請關注PHP中文網其他相關文章!