2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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

52.58. pg_trigger #

catalog pg_trigger 儲存表和檢視上的觸發器。有關更多資訊,請參閱 CREATE TRIGGER

表 52.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 = 觸發器在“origin”和“local”模式下觸發,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。

提交更正

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