两个线程同时执行相同的update语句,数据库会出现问题吗
a线程中的sql:update表table1set字段a=’新值a‘where字段b=‘1’limit500;b线程中的sql:update表table1set字段a=’...
a线程中的sql:update 表table1 set 字段a = ’新值a‘ where 字段b = ‘1’ limit 500;
b线程中的sql:update 表table1 set 字段a = ’新值b‘ where 字段b = ‘1’ limit 500;
注意其中只是对前500条更新;
这样两个线程同时执行这条sql更新语句,会出现数据库数据错误码? 展开
b线程中的sql:update 表table1 set 字段a = ’新值b‘ where 字段b = ‘1’ limit 500;
注意其中只是对前500条更新;
这样两个线程同时执行这条sql更新语句,会出现数据库数据错误码? 展开
4个回答
2013-06-22
展开全部
出错应该不会出错. 就是其中一个线程的修改, 会被另外一个线程的修改所覆盖掉.
更多追问追答
追问
覆盖?不会覆盖吧?我是用的limit 500的
追答
你
a线程 更新 limit 500
b线程 更新 limit 500
都是相同的行, 怎么不覆盖呢?
你又没有任何的 Order by 语句。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可能同时,怎么都会有一个先开始的线程,先开始的会锁住资源,先进行update,完了释放资源,第二个线程接着执行update
更多追问追答
追问
这个我知道,只是想证实下,在上面的两个线程并发循环不断执行的情况下,db的数据是否会出错?应该不错吧?
追答
不会出错,如果一个线程卡住了,那就一直锁着了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前提是2个update 同时获取了更新数据,
这个一般在sql 中可以事务处理,如下SQL
begin tran
update test
set a=1
where a<>1
commit tran
这样就不影响数据,因为第二个更新事务必须等待第一个完成,才能操作事务进行更新动作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询