Mysql触发失败

时间:2013-09-12 12:55:18

标签: mysql if-statement triggers exists create-table

我有一个经常更新的表,所以我想记录修改。

要记录修改,我想创建一个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表,我该怎样解决这个问题?

0 个答案:

没有答案