MySQL

Trigegrを作成してテーブルに変更があった際に記録する方法:

Table例:

CREATE TABLE table_changes (
  SERIAL_NO  MEDIUMINT NOT NULL AUTO_INCREMENT,
  DATETIME  DATETIME,
  TABLENAME VARCHAR(30),
  METHOD    VARCHAR(10),
  PRIMARY KEY (SERIAL_NO)
);

Trigger例:

CREATE TRIGGER test_trigger AFTER insert ON years FOR EACH ROW
  INSERT INTO table_changes  (DATETIME,TABLENAME,METHOD)
     VALUES (now(),'years','insert');

こんな感じでyearsテーブルにINSERTが実行されるとTimeStamp?がtable_changes テーブルに記録される。この情報からアプリのDBキャッシュの判断や変更の競合 に関して後調査が可能になる。 もちろん実際にはDELETEやUPDATEのTriggerも必要だし、変更者のIDも残せると さらに便利。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-03 (月) 13:00:26 (2542d)