codecamp

PostgreSQL pg_trigger

目录pg_trigger存储表和视图上的触发器。详见CREATE TRIGGER

表 51.56. pg_trigger Columns

列类型

描述

oid oid

行标识符

tgrelid oid (references pg_class.oid)

触发器所在的表

tgparentid oid (参考 pg_trigger.oid)

此被克隆的触发器的父触发器,如果不是克隆则为0;这种情况会在创建分区或附加到分区表时发生。

tgname name

触发器名(在同一个表的触发器中必须唯一)

tgfoid oid (references pg_proc.oid)

要被触发器调用的函数

tgtype int2

标识触发器触发条件的位掩码

tgenabled char

控制触发器在session_replication_role模式中的触发。 O = 触发器在originlocal模式触发, D= 触发器被禁用, R = 触发器在replica模式触发, A = 触发器总是触发。

tgisinternal bool

为真表示触发器是内部生成的(通常是为了强制由tgconstraint指定的约束)

tgconstrrelid oid (references pg_class.oid)

被一个引用完整性约束引用的表

tgconstrindid oid (references pg_class.oid)

支持一个唯一、主键、引用完整性约束或者排除约束的索引

tgconstraint oid (参考 pg_constraint.oid)

可能存在的与触发器相关的pg_constraint

tgdeferrable bool

如果约束触发器可推迟则为真

tginitdeferred bool

如果约束触发器初始可推迟则为真

tgnargs int2

传递给触发器函数的参数字符串个数

tgattr int2vector (references pg_attribute.attnum)

如果触发器是列限定的,这里存放列号;否则这是一个空数组

tgargs bytea

传递给触发器的参数字符串,每一个都以NULL结尾

tgqual pg_node_tree

触发器WHEN条件的表达式树(以nodeToString()的表现形式),如果没有则为空

tgoldtable name

OLD TABLEREFERENCING子句名称,如果没有则为空

tgnewtable name

NEW TABLEREFERENCING子句名称,如果没有则为空


当前,列限定触发器只被UPDATE事件支持,因此tgattr只用于这种事件类型。tgtype页可以包含用于其他事件类型的位,但其他事件类型是表范围的触发器且会忽略tgattr

注意

tgconstraint非零时,tgconstrrelidtgconstrindidtgdeferrabletginitdeferred与被引用的pg_constraint项有很大的冗余。但是,存在将一个不可延迟触发器关联到一个可延迟约束的可能性:外键约束可以有一些可延迟和一些不可延迟触发器。

注意

如果一个关系在本目录中拥有任何触发器,其pg_class.relhastriggers必须为真。


PostgreSQL pg_transform
PostgreSQL pg_ts_config
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }