限制mysql中的表大小,并在插入新行(上限)时删除第1行

时间:2015-04-04 19:39:20

标签: php mysql pdo insert limit

我已经找到了答案,但找不到答案。如果它已在某处得到解答,我道歉。

这是我的情况:

我的MySQL数据库中有一个表格,我想限制为150行。如果在达到限制后插入了新行,我想删除第1行,然后插入新行。

我正在使用PHP和PDO,如果这很重要的话。

我觉得这是一个简单的问题,如果它是一个完整的noob问题,我道歉。我对此比较陌生,而且我只是想学习。

任何人都可以指出我正确的方向,或解释我会用于这样的语法吗?

提前感谢您的时间!

1 个答案:

答案 0 :(得分:1)

您可以计算表格中的行数:

SELECT COUNT(*) FROM <table>

然后,如果该数字已达到您的限制,您可以删除一行:

DELETE FROM <table> ORDER BY <column> LIMIT 1;

最后添加新行。

是的,这是三个步骤,以及MySQL的运作方式。

当多个用户访问表时,这可能会变成梨状,更好地使用事务并锁定表。

我认为还需要另一种方法。这不是你应该对数据库做什么。更好的解决方案是在检索行时限制行:

SELECT * FROM <table> ORDER BY <column> LIMIT 150

这样您只需检索150行,这也可以解决您的问题。在代码中的某处添加一个无害的DELETE,如下所示:

SELECT COUNT(*) FROM <table>
DELETE FROM <table> ORDER BY <column> LIMIT <count-200>;

或者它的任何变体......基本上删除了旧的行。