我正在尝试对作业队列进行某种更新选择。我需要它来支持影响同一个表或数据库的并发进程,这个服务器将只用于队列,所以每个队列一个数据库是可以接受的。queue WHERE ID IN (SELECT ID FROM queue WHERE state=0 LIMIT X) RETURN *
我读到这将导致竞争条件,我读到有一个SELECT子查询用于更新的选项,但这将锁定行,并发调用将被阻塞,我不介意它们跳到下一个未锁定的行。
假设我创建了一个函数,在隔离级别在PostgresSQL中执行。这个函数内部有可能引发以下错误:ERROR: could not serialize access due to concurrent update。是否有方法捕获此错误并在内部重复该函数/事务?所以要有这样的东西:
CREATE FUNCTION some_stuff()