3
A
回答
3
有几种可能的方法,一种是使用存储过程插入记录。这样,SP会检查是否有超过20个,并在插入新的之后删除旧的。缺点是如果你手动插入一行,它不会被丢弃。
一个trigger可能工作...创建AFTER INSERT
触发器,然后删除旧的登录> 20 ...
2
不,这是不可能的。
有两种方式:
- 定期从表中删除行,让20行仍然存在。
- 当插入一行并且有超过20行时,更新现有行而不是插入它。
1
我不相信你可以指定表只能存储一定数量的记录,但是你可以控制插入新记录的行为。 MySQL为您提供了一些非标准工具,可以帮助您在不使用sprocs或触发器的情况下实现此功能。看到这个链接:http://www.xaprb.com/blog/2007/01/11/how-to-implement-a-queue-in-sql/
在那篇文章中的描述是非常详尽的,我不会在这里重复很多。总而言之,您使用MySQL的REPLACE命令而不是INSERT,或者使用ON DUPLICATE KEY UPDATE语句作为INSERT查询的一部分。将它与一个带有两个唯一键的表结合在一起...
此表有两个唯一键:一个用作单调增加的“行号”,另一个用于使换行效果起作用。唯一真实的数据是水果专栏。这里有一个查询中插入“苹果”到队列:
insert into q(id, modulo, fruit)
select
(coalesce(max(id), -1) + 1),
(coalesce(max(id), -1) + 1) mod 5,
'apples'
from q
on duplicate key update
id = values(id),
fruit = values(fruit)
这里的查询做什么:它发现在表ID的最大值,这应该因为它的索引是有效的。如果没有行,则结果将为NULL,其中COALESCE()将转换为-1。然后它为该值添加一个值,该值将成为id序列中下一个最大的值。我在这里真正做的是滚动我自己的AUTO_INCREMENT,稍微扭曲一下:序列从零开始,而不是一个。
等请参阅(许多)更多细节的链接。 :)
请注意,对于您的情况(因为您想维护20个记录每个用户),您需要通过UserID添加适当的过滤逻辑。如果你一次只为一个用户插入一行,这应该是非常简单的...
相关问题
- 1. 在mySQL记录中存储值列表
- 2. 如何限制SQLite/MySQL中的列值
- 3. MySQL表记录限制
- 4. 如何限制MySQL的列?
- 5. 的MySQL:查询与某些专属列值的记录的组
- 6. 如何将无限数据存储到mysql中的特定列
- 7. 如何限制空值存储在我的数组中?
- 8. 在mysql中记录不同记录后应用10的限制
- 9. 存储记录阵列
- 10. 如何限制MYSQL中的复合记录?
- 11. 限制选定的行数MySQL中的存储过程参数
- 12. 如何将表单值限制为某些数字的值?
- 13. 如何计算我的MySQL数据库中某列的唯一记录?
- 14. 限制天的记录数和计数
- 15. 如何在MySQL存储过程中更改记录更新时的变量值?
- 16. mysql工作台记录限制
- 17. 我如何限制取自mysql的值?
- 18. mysql - 存储一系列值
- 19. SQL选择最近的记录如何限制一列
- 20. 如何防止使用mysql复制某些记录
- 21. Equalvalent数组存储记录
- 22. 分组时的限制数记录
- 23. Aerospike select query中的记录数限制
- 24. 限制Rails中表中的记录数
- 25. MYSQL存储过程只记录更新
- 26. mySQL记录随机不存储到dbase
- 27. 如何使用java在mySql中的表列中存储数组值的值
- 28. 如何存储列表框值的值?
- 29. Mysql如何提取存储的JSON值
- 30. neo4j社区版在数据存储(即记录数)方面有哪些限制?