逻辑复制不会仅为每行激发FOR EACH语句触发器



我正在使用逻辑复制,并在遇到以下情况时成功触发:

CREATE TRIGGER set_updated_time_trig
AFTER INSERT OR UPDATE OR DELETE ON test
FOR EACH ROW EXECUTE FUNCTION set_updated_time();
alter table test enable always trigger set_updated_time_trig;

我用ALWAYS->REPLICA也是。

但是当我使用for each STATEMENT时,它就不再工作了。我更喜欢使用for each statement,因为我也可以添加OR TRUNCATE

CREATE TRIGGER set_updated_time_trig
AFTER INSERT OR UPDATE OR DELETE ON test
FOR EACH STATEMENT EXECUTE FUNCTION set_updated_time();

我怎么能在Truncate上触发?

这永远不会起作用,因为复制的是行,而不是语句。如果运行更改了十行的UPDATE,则备用程序将修改这十行。相反,如果UPDATE不更改任何行,则不会复制任何内容。因此,在待机状态下执行语句级触发器是没有意义的,因为它们的工作方式与行级触发器没有什么不同。

相关内容

  • 没有找到相关文章

最新更新