2011-07-06 41 views
1

我有一種情況需要跟蹤MySQL數據庫中數據的所有更改。MySQL - 更改數據庫中* data *的跟蹤?

例如,我們在「customers」表中包含一個字段,其中包含一個評級,表明與該客戶進行交易的風險程度。每當這個領域發生變化,我都需要記錄下來,所以我們可以回過頭來說「他們是3,現在他們是8」。在MySQL中是否有自動化的方式來處理這個問題,或者我只需要在應用程序本身中寫入大量的變更跟蹤邏輯?

回答

2

這是觸發器是爲MySQL內部設計的,假設您使用的是5+版本的MySQL。

CREATE TRIGGER log_change_on_table BEFORE UPDATE ON customers 
    FOR EACH ROW 
     BEGIN 
      INSERT INTO customer_log (customer_id, rating, date) 
       VALUES (OLD.customer_id, OLD.rating, now()) 
     END $$