0

頻繁に更新されるテーブルがあるため、変更をログに記録したいと考えています。

変更をログに記録するには、MySQL トリガーを作成します。私の最初の試みはうまくいきましたが、結果にはあまり満足していません. トリガーに穴が開いています。コードは次のとおりです。

DELIMITER $$

USE `test`$$

CREATE
DEFINER=`root`@`localhost`
TRIGGER `test`.`logger_insert`
AFTER INSERT ON `test`.`foo`
FOR EACH ROW
BEGIN

INSERT INTO logger(id, status, modified, type) 
VALUES (NEW.id, NEW.status, NOW(), NEW.type);


END$$

CREATE
DEFINER=`root`@`localhost`
TRIGGER `test`.`logger_update`
AFTER UPDATE ON `test`.`foo`
FOR EACH ROW
BEGIN

INSERT INTO logger(id, status, modified, type) 
VALUES (NEW.id, NEW.status, NOW(), NEW.type);


END$$

CREATE
DEFINER=`root`@`localhost`
TRIGGER `test`.`logger_delete`
AFTER DELETE ON `test`.`foo`
FOR EACH ROW
BEGIN

INSERT INTO logger(id, status, modified, type) 
VALUES (OLD.id, 'Erased', NOW(), OLD.type);

END$$

DELIMITER ;

foo問題は、誰かがテーブルを削除することを決定した場合、テーブルを更新、挿入、または削除できないことloggerです。

トリガーCREATE TABLE logger内に存在しない場合は成功しませんでした。INSERT IGNOREどちらも機能しませんでした。

logger誰かが誤ってテーブルをダンプした場合、どうすればこの問題を解決できますか?

4

0 に答える 0