gpt4 book ai didi

postgresql - postgres 中的咨询锁和评估顺序(如何在不使用单独查询的情况下获取锁)

转载 作者:行者123 更新时间:2023-11-29 11:50:51 25 4
gpt4 key购买 nike

有没有什么安全的方法可以在不使用两个单独的查询的情况下在执行特定语句之前获取咨询锁?例如,我假设如果我执行以下操作,则无法保证在插入之前将获得锁:

WITH x AS (SELECT pg_advisory_lock(1,2)) INSERT ...

但是是否有一些类似的方法可以达到预期的效果?

最佳答案

我很确定 SQL 标准要求实现表现得好像他们做的第一件事就是有效地具体化 WITH 子句中的公用表表达式。 PostgreSQL complies with this requirement .

公用表表达式(主要)表现为命名对象。多个 CTE 按照声明的顺序具体化。按名称向后引用按您预期的方式工作,按名称向前引用会引发错误。

所以我很确定,在一般情况下,CTE 必须在 INSERT 语句运行之前具体化。但就您而言,使用 PostgreSQL,我不确定,这就是原因。

PostgreSQL's implementation [of common table expressions] evaluates only as many rows of a WITH query as are actually fetched by the parent query.

我不确定 INSERT 语句从这个意义上获取一行。

关于postgresql - postgres 中的咨询锁和评估顺序(如何在不使用单独查询的情况下获取锁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com