[英]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.