gpt4 book ai didi

mysql - 在 SQL 表中存储记录数

转载 作者:行者123 更新时间:2023-11-29 09:29:24 24 4
gpt4 key购买 nike

假设我有一个包含帖子的表,每个帖子都有其所属主题的索引。我有一个包含主题的表,其中包含整数字段,表示该主题中的帖子数量。当我创建新帖子时,我将此值增加 1,然后删除帖子,我将值减少 1。我这样做是为了不在每次需要计算某些主题的帖子数量时查询数据库。但我听说这种方法使用起来可能不安全,并且表中的实际帖子数可能与存储的值不匹配。有任何有关其安全性的相关信息吗?

最佳答案

如果没有事务,主要问题是时间安排。考虑删除和两个用户:

Time     User 1                    User 2
1 count = count - 1
2 update finishes How many posts?
3 delete post Count returned
4 delete finishes

请记住,更新和删除等操作需要有限的时间 - 即使它们立即生效。因此,用户 2 将获得错误的帖子数量。这是一个竞争条件;这可能是也可能不是您的应用程序中的问题。

交易通过确保重置计数和删除帖子“同时”生效来解决这个特定问题。

次要问题是数据质量。您的数据一致性检查是在数据库外部进行的。有人可以直接进入数据库并说“哦,用户 X 的这些帖子应该被删除”。然后,该用户可能会集体删除这些帖子 - 但“忘记”或不知道更改关联的值。

这可能是一个大问题。触发器应该可以解决这个问题。

关于mysql - 在 SQL 表中存储记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59016779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com