【发布时间】:2015-01-07 07:41:59
【问题描述】:
我希望我的标题是正确的,因为我真的不知道如何措辞!
这是背景...
我有一个将数据插入数据库的应用程序。 db 包含一个日期字段和数据字段(还有其他字段,但为简单起见,这两个是唯一需要的)。同一天只能有8个条目,不能再多了。在正常操作中,这不是一个真正的问题,但每月两次,数据库在一天结束时会受到重创。
我目前的做法是查询一个日期有多少条记录。如果小于 9,我插入数据。
它从未发生过,但我担心的是请求 A 进入并检查数据库并发现有 7 条记录。可以插入。但是在 A 可以插入之前,请求 B 进来了,只找到了 7 条记录。可以插入。但这将在一个日期输入 9 条记录。这不可能发生。
我认为有两种解决方案,但我想知道 A,如果我完全正确的话!或者 B 有没有更好的解决方案。
我觉得……
A) 我可以在交易中做到这一点。但是,我仍然不会遇到同样的问题吗?据我所知,只要事务中没有查询失败,它就会运行。
或
B) 使用存储过程先检查再插入。我对存储过程的经验很少,所以我必须承认我不知道我在说什么!
或者,有没有办法让单个查询首先检查是否少于 9 个条目??
非常感谢,
加文
【问题讨论】:
-
也许您可以考虑在每次新插入之前锁定表? dev.mysql.com/doc/refman/5.0/en/lock-tables.html