[英]Execute Multiple DML on single java.sql.Statement
交易行为如何; 如果我使用以下语法使用单个java.sql.Statement
执行多个DML
String sqlStr = "INSERT INTO.... \n update t1 set....";
statemet.execute(sqlStr);
我没有更改默认的连接设置(autocommit = true)。
我知道这不是正确的方法/最佳做法; 只是好奇地知道上述代码的事务性质,即如果SQLException更新失败,是否将插入回滚?
在autocommit
设置为true的情况下,单个语句很可能会在其自己的单个事务中执行。 这可能取决于数据库,但我怀疑不是。
找出答案的最佳方法是尝试一下。
我在MySQL环境中尝试过。 效果很好。 我认为这是这样做的基本方法。
尝试使用MS SQL Sever 2008获得了一些令人惊讶的结果
我尝试了2条更新语句,根据观察,它们在单个事务中运行; 也就是说,如果第二个更新失败,则第一个更新语句将回滚。
我注意到的令人惊讶的是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.