关于oracle的update in(,)的时候的死锁问题mysql
同一个prepare语句,生成最终的sql以下sql
update table1 set name = #name# where id in (id1,id2,id3)
当两个如上的sql
sql1数据库
update table1 set name = #name# where id in (id1,id2,id3)
sql2oracle
update table1 set name = #name# where id in (id3,id2,id1)
当sql1和sql2同时执行的时候会产生死锁的问题code
解决方法很简单,in里面的数据排个序就能够了索引
表结构ci
create table table1 ( id number, a_id number, c_id number);
索引table
index: cid,a_id primary key : id
数据date
insert into talbe1(1, 1, 1); insert into talbe1(2, 1, 1); insert into talbe1(3, 2, 1); insert into talbe1(4, 2, 1);
死锁语句
sql1方法
delte from table1 where id = id1;
sql2
delte from table1 where a_id = a_id1;
同时执行sql1和sql2会发生死锁