限制sql表中记录数的最佳方法

时间:2012-10-01 06:03:58

标签: sql sqlite

我有一张users表。用户数量应限制为100.也就是说,一旦用户数达到100,我就不能再添加任何用户了。

我首先想到的是首先查询select * from users返回的行数。如果返回的行数是< 100,我仍然可以添加更多用户。否则,我不能再这样了。

这将需要2个查询来满足我的需求。知道怎么只用1个查询吗?我曾经使用过trigger语句,但我想知道这是不是一个好主意。请添加代码段作为示例。

3 个答案:

答案 0 :(得分:2)

正如评论所说,通过前端处理此问题的最佳方法..

这是另一个选项 ..

如果表中有Identity列,则可以为此表添加约束。

ALTER TABLE <your_table>
ADD CONSTRAINT chk_users
CHECK( <identity_column> < 100)

答案 1 :(得分:1)

这不是使用RDBMS的正常方式,所以这就是为什么没有一种简单的方法来实现它。

可能我这样做的方法是编写一个存储过程并调用它而不是插入。存储过程本质上将封装您的双查询解决方案,但在数据库层。(编辑 - 在sqlite中没有sprocs)

然而,重要的是要考虑为什么您需要限制用户数量。如果这种情况下你一次只能有100个活跃用户,那么我会强烈考虑存储所有用户,而是存储一个状态,指示它们是否处于活动状态。这使您有机会将非活动用户移动到活动状态,反之亦然......这只是一种情况。

答案 2 :(得分:0)

我认为让数据库确保数据是干净的,这总是一个好主意。

双层方法,你有触发器来确保数据是好的,并且检查应用程序也可能是好的。