我有一个经常更新的表,所以我想记录修改。
要记录修改,我想创建一个 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
如果有人不小心倾倒了桌子,我该如何解决这个问题?