我们有一个基于网络的应用程序.应用程序中有时间限制的数据库操作(INSERT和UPDATE)需要更多时间才能完成,因此这个特定的流程已经变为Java线程,因此它不会等待(阻止)完成整个数据库操作.
我的问题是,如果超过1个用户遇到这个特定的流程,我面临PostgreSQL抛出的以下错误:
org.postgresql.util.PSQLException: ERROR: deadlock detected
Detail: Process 13560 waits for ShareLock on transaction 3147316424; blocked by process 13566.
Process 13566 waits for ShareLock on transaction 3147316408; blocked by process 13560.
Run Code Online (Sandbox Code Playgroud)
INSERT语句中始终抛出上述错误.
附加信息: 1)我在此表中定义了PRIMARY KEY.2)此表中有FOREIGN KEY引用.3)将单独的数据库连接传递给每个Java线程.
Technologies Web Server:Tomcat v6.0.10 Java v1.6.0 Servlet数据库:PostgreSQL v8.2.3连接管理:pgpool II