支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

51.58. pg_trigger #

目錄 pg_trigger 儲存資料表和檢視表上的觸發程序。如需更多資訊,請參閱 CREATE TRIGGER

表 51.58. pg_trigger 欄位

欄位 類型

描述

oid oid

列識別碼

tgrelid oid(參照 pg_class.oid

此觸發程序所在的資料表

tgparentid oid(參照 pg_trigger.oid

此觸發程序複製自的父觸發程序(當建立分割區或將其附加到已分割的資料表時會發生這種情況);如果不是複製,則為零

tgname name

觸發程序名稱(在相同資料表的觸發程序中必須是唯一的)

tgfoid oid(參照 pg_proc.oid

要呼叫的函式

tgtype int2

識別觸發程序觸發條件的位元遮罩

tgenabled char

控制觸發程序在哪些 session_replication_role 模式下觸發。O = 觸發程序在originlocal模式下觸發,D = 觸發程序已停用,R = 觸發程序在replica模式下觸發,A = 觸發程序始終觸發。

tgisinternal bool

如果觸發程序是內部產生的,則為 True(通常是為了強制執行由 tgconstraint 識別的約束)

tgconstrrelid oid(參照 pg_class.oid

參考完整性約束所參考的資料表(如果觸發程序不是用於參考完整性約束,則為零)

tgconstrindid oid(參照 pg_class.oid

支援唯一鍵、主鍵、參考完整性或排除約束的索引(如果觸發程序不是用於這些約束類型之一,則為零)

tgconstraint oid(參照 pg_constraint.oid

與觸發程序相關聯的 pg_constraint 項目(如果觸發程序不是用於約束,則為零)

tgdeferrable bool

如果約束觸發程序是可延遲的,則為 True

tginitdeferred bool

如果約束觸發程序最初是延遲的,則為 True

tgnargs int2

傳遞給觸發程序函式的引數字串數量

tgattr int2vector(參照 pg_attribute.attnum

如果觸發程序是特定欄位的,則為欄位編號;否則為空陣列

tgargs bytea

要傳遞給觸發程序的引數字串,每個字串都以 NULL 結尾

tgqual pg_node_tree

觸發程序的 WHEN 條件的運算式樹狀結構(以 nodeToString() 表示),如果沒有,則為 null

tgoldtable name

REFERENCING 子句的 OLD TABLE 名稱,如果沒有,則為 null

tgnewtable name

REFERENCING 子句的 NEW TABLE 名稱,如果沒有,則為 null


目前,只有 UPDATE 事件支援特定欄位的觸發程序,因此 tgattr 僅與該事件類型相關。tgtype 可能也包含其他事件類型的位元,但無論 tgattr 中有什麼,都假定這些事件都是資料表範圍的。

注意

如果 tgconstraint 非零,則 tgconstrrelidtgconstrindidtgdeferrabletginitdeferred 在很大程度上與參照的 pg_constraint 項目是冗餘的。 然而,非延遲觸發器有可能與延遲約束相關聯:外鍵約束可能同時具有一些延遲和一些非延遲觸發器。

注意

如果關聯具有此目錄中的任何觸發器,則 pg_class.relhastriggers 必須為 true。

提交更正

如果您在文件中發現任何不正確、與您特定功能的使用經驗不符,或需要進一步澄清的地方,請使用此表格來報告文件問題。