簡體   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