关于使用JDBC在PostgreSQL数据库中锁定表格的问题,我有一个快速的问题。 我有一个表格,我想在其中添加一条新的记录,为此,我使用递增的整数值作为主键。
我想能够在Java中检索此列的最大值,并将其存储为变量以用作添加新行时的新主键。
这给我带来了一个小问题,因为这将被建模为多用户系统,当两个位置请求相同的最大值时会发生什么? 这当然会在尝试添加相同的主键时创建问题。
我意识到我应该在获取密钥并添加新行时在表上使用EXCLUSIVE锁定来防止读取或写入。 然而,我似乎找不到任何处理JDBC中表锁定的方法,只有标准事务。
伪代码如下:
我想能够在Java中检索此列的最大值,并将其存储为变量以用作添加新行时的新主键。
这给我带来了一个小问题,因为这将被建模为多用户系统,当两个位置请求相同的最大值时会发生什么? 这当然会在尝试添加相同的主键时创建问题。
我意识到我应该在获取密钥并添加新行时在表上使用EXCLUSIVE锁定来防止读取或写入。 然而,我似乎找不到任何处理JDBC中表锁定的方法,只有标准事务。
伪代码如下:
primaryKey = "SELECT MAX(id) FROM table1;";
primary key++;
//id retrieved again from 2nd source
"INSERT INTO table1 (primaryKey, value 1, value 2);"