Java 从插入中的选择返回值
我有一个表,其行具有伪随机唯一ID。我通过从随机排列表中选择第一个未使用的条目来实现Java 从插入中的选择返回值,java,mysql,Java,Mysql,我有一个表,其行具有伪随机唯一ID。我通过从随机排列表中选择第一个未使用的条目来实现 INSERT INTO test.Eyes (EyeId, DeviceId, DeviceName) SELECT RandomNumber, "abcd", "efgh" FROM test.RandomPermutation WHERE RandomNumber NOT IN (SELECT EyeId FROM test.Eyes) LIMIT 1; (显然,“abcd”和“efgh”在这里是占位
INSERT INTO test.Eyes (EyeId, DeviceId, DeviceName)
SELECT RandomNumber, "abcd", "efgh"
FROM test.RandomPermutation
WHERE RandomNumber NOT IN
(SELECT EyeId FROM test.Eyes) LIMIT 1;
(显然,“abcd”和“efgh”在这里是占位符)
它工作正常,行按其应该的方式插入。我不希望这是两个不同的呼吁,以防止种族状况。我的问题是,我还想在Java中返回这个随机ID(EyeId的值)。有函数
getGeneratedKeys
,但它只返回自动增量值。是否有方法返回从select中获取的值?您是否也可以有一个正常的自动增量id?基于此插入并生成您的随机id。然后使用getGeneratedKeys获取自动增量id,并从中返回指定的随机id?是的,我想这是可行的。我希望只要给数据库打一个电话就可以了,但我想再打一个电话也没用。但是,我担心这会影响基于随机数查询行所需的时间。基于已知随机id的查询应该仍然非常快(假设将随机id列设置为唯一键)。