您的位置:58脚本 > PostgreSQL 数据改变的可见性

PostgreSQL 数据改变的可见性

2023-05-27 11:32

 PostgreSQL 数据改变的可见性

下列规则主导了使用 SPI 的函数(或者任何其他 C 函数)中数据改变 的可见性:

  • 在一个 SQL 命令的执行期间,该命令所作的任何数据更改对该命令本身 是不可见的。例如,在

    INSERT INTO a SELECT * FROM a;
    

    中,被插入的行对SELECT部分不可见。

  • 一个命令 C 所作的更改对所有在 C 之后开始的命令可见,不管它们是否 在 C 之中(在 C 的执行期间)开始还是在 C 完成之后开始。

  • 在一个 SQL 命令(或者一个普通函数或者触发器)调用的函数内通过 SPI 执行的命令遵循以上哪条规则取决于传递给 SPI 的读/写标志。以 只读模式执行的命令遵循第一条规则:它们不能看到调用它们的命令的 改变。在读写模式中执行的命令遵循第二条规则:它们能看见目前为止 所有的改变。

  • 所有的标准过程语言会基于函数的易变性属性设置 SPI 读写模式。 STABLEIMMUTABLE函数的命令会以 只读模式完成,而VOLATILE函数的命令会以读写模式 完成。虽然 C 函数的作者可以违反这种习惯,但是最好不要那样做。

下一节包含一个关于这些规则应用的例子:

阅读全文
以上是58脚本为你收集整理的 PostgreSQL 数据改变的可见性全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58脚本 58jiaoben.com 版权所有 联系我们
桂ICP备12005667号-28 Powered by CMS