带表锁定的条件插入POSTGRES SQL

问题描述

我正在尝试在postgresql表中完成此逻辑:

  1. 检查是否存在某些特定条件的行。
  2. 如果存在,则什么也不做。
  3. 如果不存在,请插入具有某些值的新行。
  4. 返回插入的行,如果未插入任何内容,则不返回任何内容
  5. 这样做的方式是,如果两个进程尝试同时执行此操作,则第二个进程将被阻止访问查看表,直到第一个进程完成条件插入。
  6. li>

我当前的查询如下:(传递_currentIndex==2? FloatingActionButton():Container() idbike_idstatus)。

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 (将#修改为@)