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