表a 比如只有一条数据
id value
1 102操作是,从a表取出数据,记录到下面的log表,然后a表的数据的value加1表b是log表,记录一些操作的log
logid a_id value
1 1 100
2 1 101=================================================================以上log数据为正常情况,现在有这样的情况并发两个请求
从a表取到的value值都102
然后记录到b表的两条数据为
logid a_id value
3 1 102
4 1 102a表的sql因为是用 update a set value=value+1 这样的sql所以a表会得到正确的值id value
1 104
==============================================这种情况下b表中的log是不对的,正确应该是下面的情况
logid a_id value
3 1 102
4 1 103
==============================================
请问,我要怎么做,我不想使用排他锁这种机制,因为会严重影响程序运行的效率。
id value
1 102操作是,从a表取出数据,记录到下面的log表,然后a表的数据的value加1表b是log表,记录一些操作的log
logid a_id value
1 1 100
2 1 101=================================================================以上log数据为正常情况,现在有这样的情况并发两个请求
从a表取到的value值都102
然后记录到b表的两条数据为
logid a_id value
3 1 102
4 1 102a表的sql因为是用 update a set value=value+1 这样的sql所以a表会得到正确的值id value
1 104
==============================================这种情况下b表中的log是不对的,正确应该是下面的情况
logid a_id value
3 1 102
4 1 103
==============================================
请问,我要怎么做,我不想使用排他锁这种机制,因为会严重影响程序运行的效率。
mysql_query($slq);
搞定。
您这个,我只能说,我现在具体应用中试试
因为具体应用中,并不像我的例子那样简单,字段结构更复杂,而且select 和 insert之间还有好多处理要做,insert和update中间也还有好多处理.我现在就改改看看行不行得通