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