支援的版本:目前 (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 條目重複。但是,非延遲觸發器有可能與可延遲的約束相關聯:外鍵約束可以同時具有可延遲和非可延遲的觸發器。

注意

如果一個關聯 (relation) 在此目錄中有任何觸發器,則 pg_class.relhastriggers 必須為真。

提交更正

如果您在文件中發現任何不正確、與您特定功能的體驗不符或需要進一步說明的內容,請使用此表單回報文件問題。