私は、キー(文字列)が第3のparyソースから読み込まれるMySQL DBを持っています。ただし、これらは必ずしも一意に保証されているわけではありません(映画タイトル)。だから私はキーの一意性をチェックする必要があります。ユニークでない場合は、キーの最後にインクリメンタルカウントを追加するなどしてユニークにします。MySQL鍵の一意性の保証
これを行うにはどのようなパターンが最適ですか?私は現在、サードパーティや店舗カウントから受け取ったすべてのキーを格納するテーブルを持っているので、私はやる:私は新しい(または更新)行のIDを取得するためにjdbcTemplateやキーホルダーを使用しています
INSERT INTO MYTABLE(KEY) VALUES(KEY_VAlUE) ON DUPLICATE KEY UPDATE KEY_COUNT = KEY_COUNT + 1
。問題は、私もカウントを取り戻す必要があるということです。もちろん、そのIDでレコードを取得するために2番目のクエリ(SELECT)を実行できます。しかし、ここでの問題は並行性です。同じセカンダリ・キーを持つ別のINSERTが、SELECTを実行する直前に発生する可能性はありますが、(可能性は低いですが)可能です。この場合、カウントは2回目に増加し、間違ったカウントが返されます。
アイデア?
リチャードに感謝します。
ハイトム。はい、私は理想的ではありません。私がそれをしたい理由は、人間が読める素晴らしいURLを持っているからです。タイトルはhttp://mysite.com/The_ProducersのようにURLに変換されます。 "The_Producers"は私のユニークなDBキーで、正しい映画情報をDBからextrcatするのに使われます。ありがとうございました。 –
URLは主キーと何が関係していますか?接続する必要はありません。 –