我试图通过触发器或存储过程将行插入表中,而不将任何数据写入二进制日志。这可能吗?我知道对于正常连接,您可以设置SQL_LOG_BIN=0
为禁用连接的二进制日志记录,但我无法让它对触发器起作用。如果有办法使用联合引擎表执行此操作,那也可以。
编辑:
我几乎可以通过存储过程来实现这一点:
CREATE PROCEDURE nolog_insert(`id` INT, `data` blob)
BEGIN
SET SESSION SQL_LOG_BIN = 0;
INSERT INTO `table` (`id`, `data`) VALUES (id, data);
SET SESSION SQL_LOG_BIN = 1;
END
我通过从 mysql 提示符调用该过程来插入一条记录:
call nolog_insert(50, 'notlogged');
正如预期的那样,记录(50, 'notlogged')
被插入到 中table
,但没有写入二进制日志。
但是,我想从触发器运行此过程。使用触发器时如下:
create trigger my_trigger before insert on blackhole_table for each row call nolog_insert(new.id, new.data);
数据被插入table
并写入二进制日志。