我有个场景,我有个“烹饪前”程序。如果该日期的数据已经完成,只需返回它,否则该过程将编写它。
问题是,如果烹饪过程太长,数据就有可能被复制。
我希望这个工作流:
proc_A的过程将检查该月份的数据,如果还不存在,则进行烹饪。仅仅通过在PostgreSQL DB中进行更改,而不是对web应用程序和桌面应用程序进行更改,就可以实现这一点吗?
发布于 2018-09-27 03:42:14
我将在数据表中添加一个state列:
ready boolean DEFAULT FALSE工作流程如下:
INSERT INTO data (month, value, ready)
VALUES (date_trunc('month', current_timestamp)::date, NULL, FALSE)
ON CONFLICT (month) DO NOTHING;如果插入一行,则继续编写该值,然后运行
UPDATE data SET
value = 42, ready = TRUE
WHERE month = date_trunc('month', current_date)::date;如果第一个语句没有插入任何行,请运行
SELECT value, ready
FROM data
WHERE month = date_trunc('month', current_date)::date;如果ready是真的,返回数据,如果不是,告诉客户端请等待。
https://stackoverflow.com/questions/52527994
复制相似问题