繁体   English   中英

逻辑复制不会触发 FOR EACH STATEMENT Trigger only FOR EACH ROW

[英]Logical Replication does not Fire FOR EACH STATEMENT Trigger only FOR EACH ROW

我正在使用逻辑复制并在遇到以下情况时设法触发触发器:

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没有更改任何行,则不会复制任何内容。 所以在备用数据库上执行语句级触发器是没有意义的,因为它们的工作方式与行级触发器没有区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM