Mysql 如何限制一个表只允许插入5条数据

时间:2022-09-23 23:30:35
向各位前辈请教一个也许比较弱智以及低级的问题。
假设一个场景,新建一个数据库表A,用以存放用户注册信息,现假设只允许注册5个用户,然后将注册信息insert到A中,请问应该如何控制?

我的思路是查询表A中数据的行数,当小于5的时候则允许插入,但如果现在有4条数据,几个用户同时执行(行数<5)这个条件,那么这几个人是不是都会注册成功了??

4 个解决方案

#1


在表上加一个触发器即可

另外mongodb的capped表有这个限制条数的特性

#2


可以在before insert 触发器中实现,统计一下当前表中的记录数,如果大于5则抛异常中断处理。

#3


只要检测行数和插入数据是一起进行的就没问题,毕竟这么小的机率万一碰到手动处理一下也没什么.
也可以在插入后检测数据是否超过了,超过了就删除一下并告知超过数量.

#4


楼主你好
        这个问题大有学问,在数据库中建触发器监视注册用户的数量固然可以解决问题,但是更成熟的做法是在client的程序里面控制,因为数据库的异常会给程序带来不可预知的错误,
      而且数据库有很多模块调用,如果需要更改的话, 那必然导致需要更改所有调用它的模块,而在程序里面实现则简单而且对其他模块没有影响
      希望对楼主有所帮助

#1


在表上加一个触发器即可

另外mongodb的capped表有这个限制条数的特性

#2


可以在before insert 触发器中实现,统计一下当前表中的记录数,如果大于5则抛异常中断处理。

#3


只要检测行数和插入数据是一起进行的就没问题,毕竟这么小的机率万一碰到手动处理一下也没什么.
也可以在插入后检测数据是否超过了,超过了就删除一下并告知超过数量.

#4


楼主你好
        这个问题大有学问,在数据库中建触发器监视注册用户的数量固然可以解决问题,但是更成熟的做法是在client的程序里面控制,因为数据库的异常会给程序带来不可预知的错误,
      而且数据库有很多模块调用,如果需要更改的话, 那必然导致需要更改所有调用它的模块,而在程序里面实现则简单而且对其他模块没有影响
      希望对楼主有所帮助