首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres -每个会话运行的限制过程

Postgres -每个会话运行的限制过程
EN

Stack Overflow用户
提问于 2018-09-27 01:07:34
回答 1查看 49关注 0票数 1

我有个场景,我有个“烹饪前”程序。如果该日期的数据已经完成,只需返回它,否则该过程将编写它。

问题是,如果烹饪过程太长,数据就有可能被复制。

我希望这个工作流:

  1. 用户A从web应用程序中打开一个会话,并请求2018-6月的数据,一个名为proc_A的过程将检查该月份的数据,如果还不存在,则进行烹饪。
  2. 用户B从桌面应用程序打开另一个会话,并请求2018-6月的相同数据,然后他们会收到一条消息,表示数据正在编写,请稍候。

仅仅通过在PostgreSQL DB中进行更改,而不是对web应用程序和桌面应用程序进行更改,就可以实现这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 03:42:14

我将在数据表中添加一个state列:

代码语言:javascript
复制
ready boolean DEFAULT FALSE

工作流程如下:

代码语言:javascript
复制
INSERT INTO data (month, value, ready)
   VALUES (date_trunc('month', current_timestamp)::date, NULL, FALSE)
ON CONFLICT (month) DO NOTHING;

如果插入一行,则继续编写该值,然后运行

代码语言:javascript
复制
UPDATE data SET
   value = 42, ready = TRUE
WHERE month = date_trunc('month', current_date)::date;

如果第一个语句没有插入任何行,请运行

代码语言:javascript
复制
SELECT value, ready
FROM data
WHERE month = date_trunc('month', current_date)::date;

如果ready是真的,返回数据,如果不是,告诉客户端请等待。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52527994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档