作者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