Выполнить несколько DML на одном java.sql.Statement - PullRequest
0 голосов
/ 09 ноября 2010

Как будут вести себя транзакции; Если я использую следующий синтаксис для выполнения нескольких DML, используя один java.sql.Statement

String sqlStr = "INSERT INTO.... \n update t1 set....";

statemet.execute(sqlStr);

Я не изменяю настройку соединения по умолчанию (autocommit = true).

Я знаю, что это не правильный путь / лучшая практика; просто интересно узнать транзакционную природу вышеприведенного кода То есть, если обновление завершится неудачно с SQLException, вставит ли откат?

Ответы [ 3 ]

1 голос
/ 10 ноября 2010

Если для autocommit установлено значение true, отдельные операторы, скорее всего, будут выполняться в своих отдельных транзакциях.Это может зависеть от базы данных, но я подозреваю, что нет.

Лучший способ узнать это - попробовать.

0 голосов
/ 12 октября 2013

Я пробовал в среде MySQL. Это сработало очень хорошо. И я думаю, что это основной способ сделать это.

0 голосов
/ 10 ноября 2010

Попробовал, получил несколько удивительных результатов с MS SQL Server 2008

Я попробовал 2 оператора обновления и, согласно наблюдениям, они выполняются в одной транзакции;то есть, если второе обновление завершается неудачно, первый оператор обновления откатывается.

Удивительно, что я заметил следующее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...