28
二次テーブルにすべてのテーブルの変更をログに記録するトリガー:に、私はフィールド1にする任意のチャンスをログに記録するログですMySQLを使用すると、私はテーブルを持っている
CREATE TABLE `data_table` (
`data_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`field1` INT NOT NULL ,
`field2` INT NOT NULL ,
`field3` INT NOT NULL
) ENGINE = MYISAM ;
2、または3:
CREATE TABLE `data_tracking` (
`tracking_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`data_id` INT NOT NULL ,
`field` VARCHAR(50) NOT NULL ,
`old_value` INT NOT NULL ,
`new_value` INT NOT NULL ,
`modified` DATETIME NOT NULL
) ENGINE = MYISAM ;
私はMySQL 5を使用しています。私はトリガーを作成したいと思います。 data_tableが更新され、古い/更新された値とフィールドが変更されたときにいつでも、新しい行をdata_trackingに挿入したいと思います。私は次のことを成功させずに試みました。
DELIMITER $$
DROP TRIGGER `update_data `$$
CREATE TRIGGER `update_data` AFTER UPDATE on `data_table`
FOR EACH ROW
BEGIN
IF (NEW.field1 != OLD.field1) THEN
INSERT INTO data_tracking set old_value = OLD.field1, new_value = NEW.field1, field = "field1";
END IF;
END$$
DELIMITER ;
は、それは私がこの正しい方法についてつもりならば、私はその上の構文はどうあるべきか、非常にわからない、または、挿入行にエラーが発生しました。どんな助けもありがとう。ありがとう。
私はトリガーについて私の考えを追加しました –
"data_table"にはdata_idという名前のフィールドがありますか? –
おっと、申し訳ありませんが、私のサンプルテーブルを作成したときに、最後の1つを変更しました。これは完全に機能しました。ご不便をおかけして申し訳ございません: – Rob