看板 Database 關於我們 聯絡資訊
小弟用PHP及MySQL寫一個考試線上報名系統,考生於報名頁面填寫完後,系統會即時 產生准考證號碼.由於不同科別的考生要領到不同代碼開頭的准考證號碼,例如, 考國文的考生領到像Ch001,Ch002的准考證號而考英文的領到Eng001,Eng002的准考證號. 所以在MySQL欄位規劃,准考證號碼的欄位無法單純只用auto_increment來產生不重覆 的准考證號碼.我的做法是,先找出資料表中該科目前最後一個准考證號碼是幾號? 然後把該號碼加1再insert或update. 現在問題來了,要如何避免數千名不同科別的考生同時上線報名,因為陰錯陽差關係, 同科別的考生同時按下確定鍵而得到相同的的准考證號碼?雖然說機率很小,但果真 發生,那就問題大條了...還請各路高手指導,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.57.200
LaPass:記得可以鎖住table不准別人寫入,這是一種方法,好像叫做交 04/28 12:27
LaPass:易模式之類的。 04/28 12:28
hate9527:Sequence 04/28 12:28
alpe:unique index (subject, col with auto_increment ) 04/28 13:42
carlcarl:乾脆多個table紀錄各科總人數? 原本table再加上上面的 04/28 17:47
carlcarl:unique 04/28 17:47
Clessin:sequence?unique index?看來我要去做功課了,感恩! 04/28 18:36
bluepromise:科別和號碼分開存放? 04/28 21:16
Clessin:我已將准考證號欄位設成unique index.但用auto_increment 04/29 07:47
Clessin:沒意義,因為不同類別的考生要領到不同代碼開頭的准考證號. 04/29 07:49
alpe:用auto_incerment是讓你不用在做累加的動作, insert完抓 04/29 13:00
alpe:subj+auto 就是 serial, 不會重複作業又簡單 04/29 13:01
Clessin:查了官方手冊後,我找到方法了,我自回一篇跟大伙分享. 04/29 16:55