我有一个 MySQL DB,其中一个键(一个字符串)是从第三方源读取的。但是,这些并不总是保证是唯一的(它们是电影片名)。因此,我需要检查键的唯一性,如果不是唯一的,则对其进行修改以使其唯一 - 例如,通过在键的末尾添加增量计数。
这样做的最佳模式是什么?我目前有一个表,它存储从第 3 方收到的每个密钥并存储一个计数,所以我这样做:
INSERT INTO MYTABLE(KEY) VALUES(KEY_VAlUE) ON DUPLICATE KEY UPDATE KEY_COUNT = KEY_COUNT + 1
我正在使用 jdbcTemplate 和 keyHolder 来检索新(或更新)行的 ID。问题是我还需要恢复计数。我现在当然可以进行第二次查询 (SELECT) 以获取具有该 ID 的记录。但是这里的问题是并发性。有可能(尽管不太可能),在我执行 SELECT 之前发生另一个具有相同第三方密钥的 INSERT。在这种情况下,计数将第二次增加,我会得到错误的计数。
有任何想法吗?
谢谢理查德。