如何在MySQL表中只存储10行?添加新行时应删除较旧的行,但只有表格有10行才能删除。
请帮帮我
答案 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或时间