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