PostgreSQL提供了这些助手函数来从 事件触发器检索信息。
更多有关事件触发器的信息请见第 39 章。
pg_event_trigger_ddl_commands
() → setof record
当在一个ddl_command_end
事件触发器的函数中调用时, pg_event_trigger_ddl_commands
返回被每一个用户动作 执行的DDL命令的列表。如果在其他任何环境中 调用这个函数,会发生错误。 pg_event_trigger_ddl_commands
为每一个被执行的基本
命令返回一行,某些只有一个单一 SQL 句子的命令可能会返回多于一行。 这个函数返回下面的列:
名称 | 类型 | 描述 |
---|---|---|
classid
|
oid
|
对象所属的目录的 OID |
objid
|
oid
|
对象本身的 OID |
objsubid
|
integer
|
对象的子-id(例如列的属性号) |
command_tag
|
text
|
命令标签 |
object_type
|
text
|
对象的类型 |
schema_name
|
text
|
该对象所属的模式的名称(如果有),如果没有则为NULL 。 没有引号。 |
object_identity
|
text
|
对象标识的文本表现形式,用模式限定。如果必要,出现在 该标识中的每一个标识符都会被引用。 |
in_extension
|
boolean
|
如果该命令是一个扩展脚本的一部分则为真 |
command
|
pg_ddl_command
|
以内部格式表达的该命令的一个完整表现形式。这不能被直接输出, 但是可以把它传递给其他函数来得到有关于该命令不同部分的信息。 |
pg_event_trigger_dropped_objects
() → setof record
pg_event_trigger_dropped_objects
返回被调用sql_drop
事件的命令删除的所有对象的列表。 如果调用在任何其他上下文中,会引发一个错误。这个函数返回以下列:
名称 | 类型 | 描述 |
---|---|---|
classid
|
oid
|
对象所属的目录的 OID |
objid
|
oid
|
对象本身的 OID |
objsubid
|
integer
|
子对象ID(如列的属性号) |
original
|
boolean
|
如果这是删除中的一个根对象则为真 |
normal
|
boolean
|
指示在依赖图中有一个普通依赖关系指向该对象的标志 |
is_temporary
|
boolean
|
如果该对象是一个临时对象则为真 |
object_type
|
text
|
对象的类型 |
schema_name
|
text
|
对象所属模式的名称(如果存在);否则为NULL 。不应用引用。 |
object_name
|
text
|
如果模式和名称的组合能被用于对象的一个唯一标识符,则是对象的名称;否则是NULL 。不应用引用,并且名称不是模式限定的。 |
object_identity
|
text
|
对象身份的文本表现,模式限定的。每一个以及所有身份中出现的标识符在必要时加引号。 |
address_names
|
text[]
|
一个数组,它可以和object_type 及address_args , 一起通过pg_get_object_address 函数在一台包含有同类相同名称对象的远程服务器上重建该对象地址。 |
address_args
|
text[]
|
上述address_names 的补充。 |
pg_event_trigger_dropped_objects
可以被这样用在一个事件触发器中:
CREATE FUNCTION test_event_trigger_for_drops()
RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE
obj record;
BEGIN
FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
LOOP
RAISE NOTICE "% dropped object: % %.% %",
tg_tag,
obj.object_type,
obj.schema_name,
obj.object_name,
obj.object_identity;
END LOOP;
END;
$$;
CREATE EVENT TRIGGER test_event_trigger_for_drops
ON sql_drop
EXECUTE FUNCTION test_event_trigger_for_drops();
表 9.98
中所示的函数提供刚刚被调用过table_rewrite
事件的表的信息。如果在任何其他环境中调用,会发生错误。
表 9.98. 表重写信息函数
函数 描述 |
---|
返回将要重写的表的OID。 |
返回解释重写原因的代码。代码的确切含义取决于版本。 |
这些函数可以在事件触发器中使用,就像这样:
CREATE FUNCTION test_event_trigger_table_rewrite_oid()
RETURNS event_trigger
LANGUAGE plpgsql AS
$$
BEGIN
RAISE NOTICE "rewriting table % for reason %",
pg_event_trigger_table_rewrite_oid()::regclass,
pg_event_trigger_table_rewrite_reason();
END;
$$;
CREATE EVENT TRIGGER test_table_rewrite_oid
ON table_rewrite
EXECUTE FUNCTION test_event_trigger_table_rewrite_oid();
9.15.1. 产生 XML 内容9.15.2. XML 谓词9.15.3. 处理 XML9.15.4. 将表映射到 XML本节中描述的函数以及类函数的表达式都在类型xml...
目录D.1. 已支持特性D.2. 未支持特性D.3. XML对于SQL的限制和符合性/XMLD.3.1. 查询只限于XPath 1.0D.3.2. 实现中的附带限制这一...
DROP ROUTINE — 删除一个例程 大纲DROP ROUTINE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...
XSLT xsl:apply-templates 元素xsl:apply-templates 元素可把一个模板应用于当前的元素或者当前元素的子节点。xsl:apply-templat...
XML DOM hasAttributeNS() 方法 Element 对象定义和用法 hasAttributeNS() 方法在当前元素节点拥有匹配指定命名空间和名称的属性...
XML DOM removeNamedItem() 方法 NamedNodeMap 对象定义和用法 removeNamedItem() 方法删除指定的节点。 如果被删除的属性有默认...
XML DOM firstChild 属性 Document 对象定义和用法 firstChild 属性返回文档的第一个子节点。 语法documentObject.firstChild 提...
Window createPopup() 方法 Window 对象定义和用法createPopup()方法用来创建一个弹出窗口。语法window.createPopup()浏览器支持...
HTML DOM implementation 属性 Document 对象实例返回处理该文档的 DOMImplementation 对象:document.implementation;定义和用法...