簡體   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