簡體   English   中英

觸發器是否支持 FOR EACH STATEMENT?

[英]Is FOR EACH STATEMENT Supported in Trigger?

閱讀文檔后,認為For Each Statement涵蓋For Each Row並且效率更高,因此我創建了一個通用觸發器editts並應用於所有包含列編輯的表(代表沒有時區的編輯時間戳,所以我們知道該記錄何時更新) .

CREATE FUNCTION public._tr_updateeditts()
    RETURNS trigger
    LANGUAGE 'plpgsql'
AS $BODY$
begin
    new.editts = now();
    return new;
end;
$BODY$;

create trigger _tr_updateeditts_tbl_product before update 
    on public.product  -- table product has column [editts]
    for each statement execute procedure public._tr_updateeditts();

但是, product.editts永遠不會更新。 將上述內容更改for each row作品。 我的 Postgresql 是 v12

您不能修改語句級觸發器中的數據,並且不會設置變量NEW 為此,您需要一個行級觸發器。

語句級觸發器可能更有效,因為它們不會為每一行調用,但如果您需要修改每一行,則只有行級觸發器可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM