问题描述
我正在尝试在postgresql表中完成此逻辑:
- 检查是否存在某些特定条件的行。
- 如果存在,则什么也不做。
- 如果不存在,请插入具有某些值的新行。
- 返回插入的行,如果未插入任何内容,则不返回任何内容。
- 这样做的方式是,如果两个进程尝试同时执行此操作,则第二个进程将被阻止访问查看表,直到第一个进程完成条件插入。 li>
我当前的查询如下:(传递_currentIndex==2? FloatingActionButton():Container()
,id
,bike_id
和status
)。
status_to_conflict_on
是主键。
ride_id
目前,我收到此错误:
BEGIN;
LOCK TABLE rides in ACCESS EXCLUSIVE MODE;
INSERT INTO rides (ride_id,bike_id,status,inserted_dt,updated_dt)
SELECT :ride_id,:bike_id,status::status,Now(),Now()
WHERE NOT EXISTS (
SELECT * FROM rides WHERE bike_id=:bike_id AND status::text IN (<statuses_to_conflict_on>)
);
COMMIT;
SELECT * FROM rides WHERE ride_id=:ride_id;
,如果有人知道我的语法是否错误,或者有更好的方法来完成我所描述的内容,将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)