複数のユーザーがアクセスできるフォームがあります。フォームが開かれるたびに、ユーザーがそれを開いたときに、順次、一意のIDが作成され、フォームに配置されます。ユニークなIDは非常に重要です。一意のIDを挿入して表示する効率的な方法
これを実現するには、ユーザーがフォームを開くと、投稿要求がサーバーに送信され、最大ID +1がデータベースに挿入されます。成功すると、データベースから最大値を取得するリクエストを送信します。このIDはフォームに表示する必要があります。
このメソッドは正常に動作します... 時には。私は通常、フォームを開くたびにIDをインクリメントしています。私は、フォームが開かれた2回連続同じidを見たときしかし、時代があります
//This ajax requests posts the max value +1 to the DB and on success, gets the max value
//which should be the next id in the sequence
$.ajax({
url: "/sendsDataToServer",
success: function(data) {
sendGetRequestToGetMaxValue();
}
});
//insert max id + 1 to database
INSERT INTO TABLE (id) VALUES (COALESCE(MAX(id), 0) +1);
//Get max id from database
SELECT MAX(id) FROM TABLE;
は私がやろうとしているものを達成するためのより良い方法はありますか?もしそうなら、どのようにしてこのプロセスをより良くすることができますか?同じIDが2回連続して生成されているのを見ているので、私のアプローチには他の問題があるかもしれないことを恐れています。たとえば、複数のユーザーが同時にフォームにアクセスすると、問題になるだろう。
ありがとうございます。
このアプローチを使用しRETURNING を使用するには、根本的に間違っています。どのデータベースですか? –
私はポストグルを使用しています。しかし、私はデータベースの正しい値を見ることができます。時々間違った価値を得るのはリクエストを得ることです。 –
'Java'と' JavaScript'は同じものではありません。正しいタグを使用してください。 – Oleg