我有一個可供多個用戶訪問的窗體。每次打開表格時,都會創建一個順序唯一的ID,並在用戶打開時將其放置在表單上。 id的獨特性非常重要。插入和查看唯一ID的有效方法
爲了達到這個目的,當用戶打開表單時,會向服務器發送一個post請求,並將max id +1插入到數據庫中。成功時,我發送一個獲取請求以從數據庫獲取最大值。此ID需要在表單上顯示。
這種方法工作正常... 有時。我通常會在每次打開表單時看到表單上的id增加。但有些時候,我連續看到相同的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,所以我的方法可能存在其他問題,例如,如果多個用戶同時訪問表單,他們可能會得到相同的ID,而且將是一個問題。
在此先感謝。
這種做法是根本錯誤的。它關於什麼數據庫? –
我正在使用postgres。但是我可以在數據庫中看到正確的值。這是獲取請求有時會得到錯誤的值。 –
'Java'和'JavaScript'不是一回事,請使用正確的標籤。 – Oleg