キー (文字列) がサードパーティのソースから読み取られる MySQL DB があります。ただし、これらは常に一意であるとは限りません (映画のタイトルです)。したがって、キーの一意性を確認し、一意でない場合は、キーの末尾に増分カウントを追加するなどして、一意になるように修正する必要があります。
これを行うための最良のパターンは何ですか?私は現在、サードパーティから受け取ったすべてのキーを格納し、カウントを格納するテーブルを持っているので、次のようにします:
INSERT INTO MYTABLE(KEY) VALUES(KEY_VAlUE) ON DUPLICATE KEY UPDATE KEY_COUNT = KEY_COUNT + 1
jdbcTemplate と keyHolder を使用して、新しい (または更新された) 行の ID を取得しています。問題は、カウントを戻す必要があることです。もちろん、2 番目のクエリ (SELECT) を実行して、その ID を持つレコードを取得できます。ただし、ここでの問題は並行性にあります。SELECT を実行する直前に、同じサードパーティ キーを使用した別の INSERT が発生する可能性があります (可能性は低いですが)。この場合、カウントが 2 回インクリメントされ、間違ったカウントが返されます。
何か案は?
ありがとうリチャード。