向各位前辈讨教一个也许比较弱智以及低级的问题。
假设一个场景,新建一个数据库表A,用以存放用户注册信息,现假设只允许注册5个用户,然后将注册信息insert到A中,问一下应该怎么样控制?
本人的思路是查询表A中数据的行数,当小于5的时候则允许插入,但假如现在有4条数据,几个用户同时执行(行数<5)这个条件,那么这几个人是不是都会注册成功了?
假设一个场景,新建一个数据库表A,用以存放用户注册信息,现假设只允许注册5个用户,然后将注册信息insert到A中,问一下应该怎么样控制?
本人的思路是查询表A中数据的行数,当小于5的时候则允许插入,但假如现在有4条数据,几个用户同时执行(行数<5)这个条件,那么这几个人是不是都会注册成功了?
解决方案
10
在表上加一个触发器即可
另外mongodb的capped表有这个限制条数的特性
另外mongodb的capped表有这个限制条数的特性
10
可以在before insert 触发器中实现,统计一下当前表中的记录数,假如大于5则抛异常中断处理。
10
只要检测行数和插入数据是一起进行的就没问题,毕竟这么小的机率万一碰到手动处理一下也没什么.
也可以在插入后检测数据能否超过了,超过了就删除一下并告知超过数量.
也可以在插入后检测数据能否超过了,超过了就删除一下并告知超过数量.
10
LZ你好
这个问题大有学问,在数据库中建触发器监视注册用户的数量固然可以解决问题,但是更成熟的做法是在client的程序里面控制,原因是数据库的异常会给程序带来不可预知的错误,
而且数据库有很多模块调用,假如需要更改的话, 那必然导致需要更改全部调用它的模块,而在程序里面实现则简单而且对其他模块没有影响
希望对LZ有所帮助
这个问题大有学问,在数据库中建触发器监视注册用户的数量固然可以解决问题,但是更成熟的做法是在client的程序里面控制,原因是数据库的异常会给程序带来不可预知的错误,
而且数据库有很多模块调用,假如需要更改的话, 那必然导致需要更改全部调用它的模块,而在程序里面实现则简单而且对其他模块没有影响
希望对LZ有所帮助