MySQL用觸發器做日志是一種常見的操作,在很多場合都有用到。觸發器是MySQL數據庫的一種程序對象,它可以自動地響應數據庫中的某些特定事件來完成某些特定操作。
CREATE TRIGGER tr_update_log AFTER UPDATE ON my_table FOR EACH ROW BEGIN INSERT INTO my_table_log (column1,column2,column3,operation) VALUES (NEW.column1,NEW.column2,NEW.column3,'update'); END;
上面的代碼表示在每次my_table表中有數據更新時,都會向my_table_log表中插入一條日志。其中,NEW表示觸發更新操作后,my_table表中數據的新值。
CREATE TABLE my_table ( id INT PRIMARY KEY, column1 VARCHAR(20), column2 VARCHAR(20), column3 VARCHAR(20) ); CREATE TABLE my_table_log ( id INT PRIMARY KEY AUTO_INCREMENT, column1 VARCHAR(20), column2 VARCHAR(20), column3 VARCHAR(20), operation VARCHAR(10), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP )
在實際應用中,我們需要先創建相應的my_table和my_table_log兩個表,并定義它們的字段。其中,my_table用來存儲需要記錄日志的數據,my_table_log用來存儲相應的日志信息,包括my_table的主鍵id、每個字段的值、操作類型和創建時間等。
除了更新操作之外,MySQL的觸發器還可以響應其他事件,比如插入、刪除、替換等。通過對這些事件的處理,我們可以靈活地構建出完整的數據操作日志系統,為后續的數據分析和管理提供便利。