MySQL触发器: INSERT ON log BEFORE DELETE ON table

标签 mysql database triggers

这是我在这里发表的第一篇文章! =]

我正在创建一个触发器,以便在每次有人尝试从表中删除某些内容时插入日志表

CREATE DEFINER=`root`@`localhost` TRIGGER `user_before_delete`      
BEFORE DELETE ON `user` FOR EACH ROW BEGIN

INSERT INTO log_alert(id, table_id, name)
VALUES('99002', OLD.id, OLD.name);

SIGNAL SQLSTATE '99002'
SET MESSAGE_TEXT = 'TRYING TO REMOVE A USER!'
END

但问题是: SIGNAL SQLSTATE 回滚整个操作! 那么,如何在日志表上插入并防止删除用户?

最佳答案

Marc B 解决方法对我有用 =]

quick/dirty workaround: change log_alert to be a myisam table. no transactions there, so no way to roll back your insert. –  Marc B 15 hours ago

只需将log_alert更改为MyISAM类型,INSERTS就不会再回滚

关于MySQL触发器: INSERT ON log BEFORE DELETE ON table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285859/

相关文章:

带有 IF 语句的 MySQL VIEW

php - 为什么这个语法有效?

php - 对存储此表单中的数据感到困惑

postgresql - postgresql中级联触发器的执行顺序

php - 使用 MySQL 表字段填充 HTML 表的准备语句结果

mysql - 为什么 ActiveRecord 在从数组中删除对象时要尝试删除与对象对应的行?

sql - 如何将 View 的所有权限授予任意用户

sql - try catch 错误消息外键约束

windows-phone-7 - Windows Phone 7中的样式触发器

php - 使用 PHP 在 MySQL 表中搜索 Base64 字符串