限制表行

时间:2012-06-06 09:00:54

标签: mysql

如何在MySQL表中只存储10行?添加新行时应删除较旧的行,但只有表格有10行才能删除。

请帮帮我

3 个答案:

答案 0 :(得分:1)

您可以使用after insert触发器实现此目的,删除最小日期的行。例如DELETE FROM myTable WHERE myTimestamp =(SELECT MIN(myTimestamp)FROM myTable)但理论上可以删除多行,具体取决于更新的粒度。

你可以有一个递增序列,并且总是只删除该序列的最小值。

问题是你为什么要这样做呢?这是一个不寻常的要求。

一个基本的例子(未经验证/执行,我没有在这台特定的机器上安装mySQL)看起来像。

CREATE TRIGGER CycleOldPasswords AFTER INSERT ON UserPasswords FOR EACH ROW

    set @mycount = SELECT COUNT(*) FROM UserPasswords up where up.UserId = NEW.UserId;

    if myCount >= 10 THEN
        DELETE FROM UserPasswords up where up.Timestamp = (SELECT min(upa Timestamp) FROM UserPasswords upa WHERE NEW.UserId = upa.UserId) AND NEW.UserId = up.UserId;
    END
END;

答案 1 :(得分:0)

您可以在插入第一行时检索最后插入的ID,并将其存储在变量中。当插入10行时,删除id <&lt;的行。第一个插入记录的id。请试一试。

答案 2 :(得分:0)

首先使用insert查询插入所有值 然后运行此查询

delete from table_name where (cond) order by id desc limit 10

必须在一列中指定ID或时间