在 mysql 中限制 table 大小,并在插入新行(超过限制)时删除第 1 行
Limiting table size in mysql, and removing row #1 when new row (above limit) is inserted
我已经搜索过这个问题的答案,但没有找到。如果已经在某处得到回答,我深表歉意。
这是我的情况:
我的 MySQL 数据库中有一个 table,我想将其限制为 150 行。如果在达到限制后插入新行,我想删除第 1 行,然后插入新行。
如果重要的话,我正在使用 PHP 和 PDO。
我觉得这是一个简单的问题,如果问的完全是菜鸟问题,我深表歉意。我对此比较陌生,我只是想学习。
任何人都可以指出正确的方向,或者解释我将用于此类事情的语法吗?
提前感谢您的宝贵时间!
您可以计算 table 中的行数:
SELECT COUNT(*) FROM <table>
然后,如果该数字已达到您的限制,您可以删除一行:
DELETE FROM <table> ORDER BY <column> LIMIT 1;
最后添加新行。
是的,这是三个步骤,这就是 MySQL 的工作原理。
当多个用户访问 table 时,这可能会出现问题,最好使用事务并锁定 table。
我认为需要另一种方法。这不是您应该对数据库执行的操作。更好的解决方案是在检索行时限制行数:
SELECT * FROM <table> ORDER BY <column> LIMIT 150
这样你只检索 150 行,这应该也能解决你的问题。在您的代码中的某处添加无害的 DELETE,如下所示:
SELECT COUNT(*) FROM <table>
DELETE FROM <table> ORDER BY <column> LIMIT <count-200>;
或者它的任何变体...基本上删除过时的行。
我已经搜索过这个问题的答案,但没有找到。如果已经在某处得到回答,我深表歉意。
这是我的情况:
我的 MySQL 数据库中有一个 table,我想将其限制为 150 行。如果在达到限制后插入新行,我想删除第 1 行,然后插入新行。
如果重要的话,我正在使用 PHP 和 PDO。
我觉得这是一个简单的问题,如果问的完全是菜鸟问题,我深表歉意。我对此比较陌生,我只是想学习。
任何人都可以指出正确的方向,或者解释我将用于此类事情的语法吗?
提前感谢您的宝贵时间!
您可以计算 table 中的行数:
SELECT COUNT(*) FROM <table>
然后,如果该数字已达到您的限制,您可以删除一行:
DELETE FROM <table> ORDER BY <column> LIMIT 1;
最后添加新行。
是的,这是三个步骤,这就是 MySQL 的工作原理。
当多个用户访问 table 时,这可能会出现问题,最好使用事务并锁定 table。
我认为需要另一种方法。这不是您应该对数据库执行的操作。更好的解决方案是在检索行时限制行数:
SELECT * FROM <table> ORDER BY <column> LIMIT 150
这样你只检索 150 行,这应该也能解决你的问题。在您的代码中的某处添加无害的 DELETE,如下所示:
SELECT COUNT(*) FROM <table>
DELETE FROM <table> ORDER BY <column> LIMIT <count-200>;
或者它的任何变体...基本上删除过时的行。