Bas*_*que 9 postgresql select locking
所述的PostgreSQL 9.4文档指出添加NOWAIT
选项将SELECT FOR UPDATE
当行不能被锁定时产生一个错误的装置:
要防止操作等待其他事务提交,请使用 NOWAIT 选项。使用 NOWAIT,如果无法立即锁定所选行,该语句将报告错误,而不是等待。
那究竟是什么错误?
由于这是一个可接受的条件,我希望我的 Java 代码检查此类预期错误,然后解决它。
55P03
在 Postgres 9.4.x 中,我通过SELECT FOR UPDATE
在 pgAdmin 中执行一个 unresolved然后SELECT FOR UPDATE NOWAIT
在我的 Java 应用程序中执行一个来测试这个。我使用了 JDBC 驱动程序JDBC41 Postgresql Driver, Version 9.4-1201
。
结果是以下PostgreSQL 错误代码。
ERROR: could not obtain lock on row in relation "my_table_"
Class 55 — Object Not In Prerequisite State
55P03
lock_not_available