簡體   English   中英

Postgres觸發器

[英]Postgres triggers

我想知道哪個表存儲了觸發器的create語句,例如

CREATE TRIGGER t_update_sal
  AFTER INSERT OR UPDATE
  ON employees
  FOR EACH ROW
  EXECUTE PROCEDURE t_update_sal_v1();

您可以在information_schema.triggers上挖掘該information_schema.triggers

information_schema.triggers僅存儲觸發器定義的一部分。

您可以使用pg_get_triggerdef()獲取觸發器的完整SQL:

select trg.tgname, 
       pg_catalog.pg_get_triggerdef(trg.oid, true)
from pg_trigger trg
  join pg_class tbl on trg.tgrelid = tbl.oid
  join pg_namespace sch on tbl.relnamespace = sch.oid
where tbl.relname = 'employees'
  and sch.nspname = 'public'
order by 1;

沒有任何表可以存儲觸發器的“ create statement”。 SQL被解析,執行和丟棄。

pg_dump從系統目錄重新構建該語句:主要是pg_catalog.pg_trigger ,以及從pg_classpg_attributepg_namespace等獲取的其他信息。

正如Soni所指出的那樣,在information_schema.triggers視圖中有一個用戶友好的界面。

暫無
暫無

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

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