好吧,我正在运行一个单一的主设备和一些奴隶的设置。所有写入都通过主设备,并复制到严格用于读取的从设备。MySQL触发器和存储过程复制
现在我有一个存储过程(不是函数),它是由插入上的触发器调用的。根据MySQL文档,对于复制触发器,将调用记录到触发器,而存储过程实际记录存储过程的结果。
所以我的问题是,当我的触发器被触发时,它是否会复制触发器和触发器调用的过程的结果(导致该过程有效地运行两次)?或者它会简单地复制触发器,让奴隶自己重新运行存储过程?
感谢
好吧,我正在运行一个单一的主设备和一些奴隶的设置。所有写入都通过主设备,并复制到严格用于读取的从设备。MySQL触发器和存储过程复制
现在我有一个存储过程(不是函数),它是由插入上的触发器调用的。根据MySQL文档,对于复制触发器,将调用记录到触发器,而存储过程实际记录存储过程的结果。
所以我的问题是,当我的触发器被触发时,它是否会复制触发器和触发器调用的过程的结果(导致该过程有效地运行两次)?或者它会简单地复制触发器,让奴隶自己重新运行存储过程?
感谢
在MySQL 5.0(和MySQL 5.1与基于二进制日志声明),只调用查询记录,所以在你的情况下,INSERT将被记录。
在从站上,INSERT将被执行,然后触发器将在从站上重新运行。因此,触发器需要存在于从属设备上,并假设它已经存在,那么它将以与主设备完全相同的方式执行。
在MySQL 5.1中,有基于行的二进制日志记录,它只记录被更改的行,因此触发器不会在从属系统上重新启动,但所有更改的行仍会传播。
除了哈里森的出色答卷: