错误:由于并发更新,无法序列化访问 (SQLSTATE 40001)

ERROR: could not serialize access due to concurrent update (SQLSTATE 40001)

提问人:Vaso Miruashvili 提问时间:11/2/2023 更新时间:11/2/2023 访问量:35

问:

这是我拥有的代码,它是一个简单的更新:

 UPDATE foregin_schema.foreign_table a
        SET wa_round =  b.u_round,
            update_date = b.lst_update,
            round_batch_id = null
        FROM (select s.u_round, s.user_id, s.lst_update
              from local_server_table s
              where s.must_be_insert = 0) b
        WHERE a.user_id = b.user_id;

这里的问题是错误,有时会发生,但并非总是如此

错误:由于并发更新,无法序列化访问 (SQLSTATE 40001)

foregin_schema.foreign_table是从另一台服务器导入的表,并且此表上总是发生另一个更新,但是如何跳过锁定的行?这是服务器问题还是某些隔离级别问题?

PostgreSQL SQL 更新 隔离级别

评论

1赞 Laurenz Albe 11/3/2023
这只是一个序列化错误。别担心,重复交易。如果您正在使用或隔离,这就是您必须做的。REPEATABLE READSERIALIZABLE

答: 暂无答案