Postgresql
PostgreSQL 中的觸發器過程可以學習自己的名稱嗎?
PostgreSQL 中的觸發器過程可以從特殊變數中獲知觸發它的觸發器的名稱
TG_NAME
。但它也能學會自己的名字嗎?我想在新表中保留適用於每個觸發器過程的附加配置資訊,並且需要觸發器過程的名稱(最好不要手動重新輸入)才能從該表中選擇值。
您可以查詢
pg_trigger
目錄表並收集此資訊:SELECT tg.tgfoid::regproc::text INTO v_function_name FROM pg_trigger tg WHERE tg.tgrelid = TG_RELID AND tg.tgname = TG_NAME;
v_function_name
是您必須在之前聲明的變數(作為文本或 varchar)。如果不簡單(就像),強制轉換到
regproc
然後 to將使它的名稱雙引號,如果你想避免它,你可以簡單的 join和 get (在這種情況下可以是 type ):text``quote_ident``pg_proc``proname``v_function_name``name
SELECT pr.proname INTO v_function_name FROM pg_trigger tg INNER JOIN pg_proc pr ON pr.oid = tg.tgfoid WHERE tg.tgrelid = TG_RELID AND tg.tgname = TG_NAME;