下列规则主导了使用 SPI 的函数(或者任何其他 C 函数)中数据改变 的可见性:
在一个 SQL 命令的执行期间,该命令所作的任何数据更改对该命令本身 是不可见的。例如,在
INSERT INTO a SELECT * FROM a;
中,被插入的行对SELECT
部分不可见。
一个命令 C 所作的更改对所有在 C 之后开始的命令可见,不管它们是否 在 C 之中(在 C 的执行期间)开始还是在 C 完成之后开始。
在一个 SQL 命令(或者一个普通函数或者触发器)调用的函数内通过 SPI 执行的命令遵循以上哪条规则取决于传递给 SPI 的读/写标志。以 只读模式执行的命令遵循第一条规则:它们不能看到调用它们的命令的 改变。在读写模式中执行的命令遵循第二条规则:它们能看见目前为止 所有的改变。
所有的标准过程语言会基于函数的易变性属性设置 SPI 读写模式。 STABLE
和IMMUTABLE
函数的命令会以 只读模式完成,而VOLATILE
函数的命令会以读写模式 完成。虽然 C 函数的作者可以违反这种习惯,但是最好不要那样做。
下一节包含一个关于这些规则应用的例子:
pg_replication_slots视图和pg_stat_replication视图分别提供了有关复制槽和流复制连接的当前状态的信息。这些视图适用于物理和...
ALTER AGGREGATE — 更改一个聚集函数的定义大纲ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_nameALTER AGGREG...
ALTER EVENT TRIGGER — 更改一个事件触发器的定义大纲ALTER EVENT TRIGGER name DISABLEALTER EVENT TRIGGER name ENABLE [ REP...
ALTER OPERATOR — 更改一个操作符的定义 大纲ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )OWNER TO ...
ALTER USER MAPPING — 更改一个用户映射的定义大纲ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER ...
XML DOM 节点类型 DOM 是一个代表节点对象层次的文档。XML 文档对象模型(DOM)具有多种节点类型。 尝试一下 - 实例下面的实例使...
Area search 属性 Area 对象定义和用法search 属性设置或者返回 href 属性值的查询字符串部分。语法areaObject.search=querystri...
Window open() 方法 Window 对象定义和用法open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。 语法window.open(UR...
Window close() 方法 Window 对象定义和用法close() 方法用于关闭浏览器窗口。语法window.close()浏览器支持所有主要浏览器都支...
HTML DOM title 属性 Document 对象定义和用法title 属性可返回当前文档的标题( HTML title 元素中的文本)。语法document.titl...