You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保PostgreSQL函数同一时间仅被调用一次?是否存在函数锁?

PostgreSQL函数单实例执行的锁机制方案

问题描述

我有一个PostgreSQL函数,希望它在任意时刻仅被调用一次,即不允许两个或多个调用同时执行。请问是否存在针对该函数本身的锁机制?

已采纳的解决方案

@calvin-furano提出的方案可行,但存在以下注意事项:

  • 所有类型的advisory locks在Stored Functions中无法正常工作,因为Stored Functions会自动在事务内运行。锁需要在函数结束前(即事务执行期间)释放,这会引入竞态条件,完全违背锁的设计初衷。
  • Stored Procedures可以正常工作,因为它没有自动事务包装。缺点是Stored Procedures无法在SELECT语句中使用,因此针对该使用场景,不得不将功能拆分为两步:一步负责加锁和更新,另一步查询已更新的内容。

内容的提问来源于stack exchange,提问作者Ayman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:42:34