如果我有一個數據庫與以下信息,我如何設置我的下一個INSERT
查詢,以便填入ID? (。所以,這是5在這種情況下)MySQL之間插入的ID的
基本上,一旦得到24個,這將繼續在順序插入(例如:30,31,32)
如果我有一個數據庫與以下信息,我如何設置我的下一個INSERT
查詢,以便填入ID? (。所以,這是5在這種情況下)MySQL之間插入的ID的
基本上,一旦得到24個,這將繼續在順序插入(例如:30,31,32)
你不」噸。無論如何都不是一個自動遞增的整數。
您可以將列更改爲不是自動遞增整數,但是在執行每個插入操作之前,您需要確定下一個ID,這會使您的所有INSERT
查詢不必要地複雜,代碼更難以維護。更不用說如果多個線程試圖插入並且找到下一個ID並插入一條記錄的操作不是完全原子化,那麼引入一個重要的失敗點。
爲什麼你甚至需要這個?數據庫生成的主鍵整數沒有理由像這樣連續。它的目的是獨一無二的,只要它能達到這個目的就行。沒有必要「填補先前刪除的記錄留下的漏洞」。
您可能向數據庫中添加一個不同的列,並執行在該列上插入記錄時查找下一個連續數字的邏輯。但是你仍然會遇到上述的競爭條件和不必要的複雜性問題。
,您可以把它我字段和值
插入到表(我等,等)值(5,等等,等等);
但是,我不認爲你可以動態地做到這一點。如果我是自動增量,那麼它會繼續在先前的元組是否已被刪除等。
將您的文件名更改爲比id更有意義的內容。
我認爲像files/uploads/20130515_170349.wv
(第一行)使一個很大的意義(假設你沒有超過每秒一個文件。
這還具有以下優點,訂購的文件名是按字母順序按照時間順序排列,使得更容易看到更新和更舊的文件
您的應用程序邏輯應該**絕不**依賴於實際的主鍵值所以基本上你應該關心它是否是5或555值 – zerkms
Auto-遞增鍵旨在確保_uniqueness_,而不是順序性。如果您需要在您的應用程序代碼中寫入遞增的數字,請在您的提取循環中執行。 –
我不希望Filename成爲像/files/uploads/57427689.jpg那樣極端的東西,如果這個時候到了,那麼它可以使用大約300,000個空/被刪除的行。 – Kody