如果 表A 里有10件满足 更新日期 = 20131112 的数据,
现在,我用2个线程同时去更新数据,更新用sql文都是:update 表A set 字段1 = ‘hello world’ where 更新日期 = 20131112
而且,2个线程用2个不同的数据库连接,autocommit都设置成false,
那么更新结果有没有可能会出现,一个线程更新了3件数据,另外一个线程更新了7件数据的结果,甚至出现2个线程都更新了10件数据的结果呢?
现在,我用2个线程同时去更新数据,更新用sql文都是:update 表A set 字段1 = ‘hello world’ where 更新日期 = 20131112
而且,2个线程用2个不同的数据库连接,autocommit都设置成false,
那么更新结果有没有可能会出现,一个线程更新了3件数据,另外一个线程更新了7件数据的结果,甚至出现2个线程都更新了10件数据的结果呢?
最好是对线程访问数据库做同步。不然这样的操作很危险
线程1:update 表A set 更新日期 = 20131113 where 更新日期 = 20131112
线程2:update 表A set 更新日期 = 20131114 where 更新日期 = 20131112
如果JDBC的事务隔离级别是Read Uncommitted的话,结果如何,是Read Committed的话,结果又是什么情况?
调用更新语句会将在这行数据上增加一个行锁,所以对于单行的数据更新第一句成功,第二句就会更新不成功。