PostgreSQL pg_trigger

2021-09-14 13:55 更新

目錄pg_trigger存儲(chǔ)表和視圖上的觸發(fā)器。詳見(jiàn)CREATE TRIGGER。

表 51.56. pg_trigger Columns

列類型

描述

oid oid

行標(biāo)識(shí)符

tgrelid oid (references pg_class.oid)

觸發(fā)器所在的表

tgparentid oid (參考 pg_trigger.oid)

此被克隆的觸發(fā)器的父觸發(fā)器,如果不是克隆則為0;這種情況會(huì)在創(chuàng)建分區(qū)或附加到分區(qū)表時(shí)發(fā)生。

tgname name

觸發(fā)器名(在同一個(gè)表的觸發(fā)器中必須唯一)

tgfoid oid (references pg_proc.oid)

要被觸發(fā)器調(diào)用的函數(shù)

tgtype int2

標(biāo)識(shí)觸發(fā)器觸發(fā)條件的位掩碼

tgenabled char

控制觸發(fā)器在session_replication_role模式中的觸發(fā)。 O = 觸發(fā)器在originlocal模式觸發(fā), D= 觸發(fā)器被禁用, R = 觸發(fā)器在replica模式觸發(fā), A = 觸發(fā)器總是觸發(fā)。

tgisinternal bool

為真表示觸發(fā)器是內(nèi)部生成的(通常是為了強(qiáng)制由tgconstraint指定的約束)

tgconstrrelid oid (references pg_class.oid)

被一個(gè)引用完整性約束引用的表

tgconstrindid oid (references pg_class.oid)

支持一個(gè)唯一、主鍵、引用完整性約束或者排除約束的索引

tgconstraint oid (參考 pg_constraint.oid)

可能存在的與觸發(fā)器相關(guān)的pg_constraint項(xiàng)

tgdeferrable bool

如果約束觸發(fā)器可推遲則為真

tginitdeferred bool

如果約束觸發(fā)器初始可推遲則為真

tgnargs int2

傳遞給觸發(fā)器函數(shù)的參數(shù)字符串個(gè)數(shù)

tgattr int2vector (references pg_attribute.attnum)

如果觸發(fā)器是列限定的,這里存放列號(hào);否則這是一個(gè)空數(shù)組

tgargs bytea

傳遞給觸發(fā)器的參數(shù)字符串,每一個(gè)都以NULL結(jié)尾

tgqual pg_node_tree

觸發(fā)器WHEN條件的表達(dá)式樹(shù)(以nodeToString()的表現(xiàn)形式),如果沒(méi)有則為空

tgoldtable name

OLD TABLEREFERENCING子句名稱,如果沒(méi)有則為空

tgnewtable name

NEW TABLEREFERENCING子句名稱,如果沒(méi)有則為空


當(dāng)前,列限定觸發(fā)器只被UPDATE事件支持,因此tgattr只用于這種事件類型。tgtype頁(yè)可以包含用于其他事件類型的位,但其他事件類型是表范圍的觸發(fā)器且會(huì)忽略tgattr。

注意

當(dāng)tgconstraint非零時(shí),tgconstrrelid、tgconstrindidtgdeferrabletginitdeferred與被引用的pg_constraint項(xiàng)有很大的冗余。但是,存在將一個(gè)不可延遲觸發(fā)器關(guān)聯(lián)到一個(gè)可延遲約束的可能性:外鍵約束可以有一些可延遲和一些不可延遲觸發(fā)器。

注意

如果一個(gè)關(guān)系在本目錄中擁有任何觸發(fā)器,其pg_class.relhastriggers必須為真。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)