Documentation Home

17.4.1.33 复制和触发器

使用基于语句的复制,在源上执行的触发器也会在副本上执行。使用基于行的复制,在源上执行的触发器不会在副本上执行。相反,触发器执行导致的源上的行更改被复制并应用于副本。

此行为是设计使然。如果在基于行的复制下,副本应用了触发器以及由它们引起的行更改,则这些更改实际上会在副本上应用两次,从而导致源和副本上的数据不同。

如果您希望触发器在源和副本上都执行,可能是因为您在源和副本上有不同的触发器,您必须使用基于语句的复制。但是,要启用副本端触发器,没有必要专门使用基于语句的复制。仅对那些需要这种效果的语句切换到基于语句的复制就足够了,而在其余时间使用基于行的复制。

AUTO_INCREMENT使用基于语句的复制无法正确复制 调用导致更新列的触发器(或函数)的语句。MySQL 5.6 将此类语句标记为不安全。(漏洞 #45677)