繁体   English   中英

在单个java.sql.Statement上执行多个DML

[英]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条更新语句,根据观察,它们在单个事务中运行; 也就是说,如果第二个更新失败,则第一个更新语句将回滚。

我注意到的令人惊讶的是:

https://connect.microsoft.com/SQLServer/feedback/details/620522/invalid-object-exception-not-thrown-by-com-microsoft-sqlserver-jdbc-sqlserverdriver#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM