我了解PHP和MySQL的基础知识。如果我有一个名为“Table1”的表,其中包含“id”,“name”,“count”。当用户提交邮件时,它将被设置为待处理,以便主持人必须批准它。因此,我的网站中会有几个主持人,当两个或多个mod同时接受同一个用户的消息时(这将更新消息表以及“Table1” - 将“count”增加1),它会引起问题。我是对的吗?
那么,如何解决这个问题呢?
EDIT1:
table1包含注册用户的详细信息。另一个表(“Table2”)用于存储将存储用户ID,唯一消息ID,消息,日期等的消息
EDIT2:
mod会更新消息表中的字段,以查找他接受的消息(update table2 set approved=1 where msgid = 123
)。并且,当他接受它时,将对table1(update table1 set count = count+1 where userid = 5
)执行更新语句。像这样,我可以消除count() - select count(msgid) from table2 where userid = 5
答案 0 :(得分:0)
发布UPDATE table1 SET count = count + 1 WHERE id = ?
时没有并发问题,请参阅我提供的可能重复链接,以便更多地阅读有关mysql&并发性。
答案 1 :(得分:0)
在mysql中使用锁定,解锁 * 表 *。
MySQL允许客户端会话显式获取表锁,以便与其他会话协作以访问表,或者防止其他会话在会话需要对其进行独占访问期间修改表。会话只能为自己获取或释放锁。一个会话无法获取另一个会话的锁定或释放另一个会话持有的锁定。
答案 2 :(得分:0)
您应该使用并发(多用户访问)和锁定。事实上,设计应用程序代码以考虑并发问题是至关重要的。
您可以找到Locks in mySql here的最佳在线教程。