我有一個每天接受數百個數據的php系統。即時通訊使用MySQL作爲數據庫來存儲所有的數據。自動增加一個獨特的varchar可能會導致重複
其中一個主表,讓我們稱之爲'tableData',存儲所有的主要數據,並有2個主鍵。第一個主鍵是一個自動增量整數。第二個主鍵是以此格式存儲varchar值的submission_num(rep/yyyy/AIinteger,例如rep/2017/00021,rep/2017/00023,rep/2016/02345)
當數據需要要提交到tableData中,php將檢索submission_num的最大數量並將其增加1,然後使用新的submission_num將新數據插入到tableData中。 (例如,如果php收到rep/2017/00034作爲最大數量,它會將整數部分增加1,這會導致新的提交num rep/2017/00035,然後將新數據與新提交一起存儲NUM)
PHP腳本的算法看起來像這樣
獲取最大submission_num,
查詢:SELECT submission_num FROM表資料WHERE SUBSTR(submission_num,5,4)=「$ curYear 'ORDER BY submission_num DESC LIMIT 0,1由1
- 商店增加的整數部分數據
此方法造成一個問題。當兩個或更多用戶在適當時刻點擊「提交」按鈕。他們將生成相同的提交數量並保存到數據庫與重複提交數量(此提交數量需要是唯一的)
有沒有辦法我可以暫時鎖定從我的PHP腳本的任何選擇查詢表?
btw,即時通訊非常抱歉,如果我通知你們很差。 im在英語中很糟糕 –
根據使用表的類型,您將使用事務或鎖。無論如何,如果您在一個表中需要兩個自動增量,則表明您可能只需要其中一個,或者您可能需要創建另一個表。 –