多个用户同时更新字段

时间:2011-11-14 06:25:04

标签: php mysql

我了解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

的调用

3 个答案:

答案 0 :(得分:0)

发布UPDATE table1 SET count = count + 1 WHERE id = ?时没有并发问题,请参阅我提供的可能重复链接,以便更多地阅读有关mysql&并发性。

答案 1 :(得分:0)

在mysql中使用锁定解锁 * *。

MySQL允许客户端会话显式获取表锁,以便与其他会话协作以访问表,或者防止其他会话在会话需要对其进行独占访问期间修改表。会话只能为自己获取或释放锁。一个会话无法获取另一个会话的锁定或释放另一个会话持有的锁定。

参考:http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

答案 2 :(得分:0)

您应该使用并发(多用户访问)和锁定。事实上,设计应用程序代码以考虑并发问题是至关重要的。

您可以找到Locks in mySql here的最佳在线教程。