Может ли откат работать без точек сохранения в DB2?

Этот вопрос частично связан с этим

Почему моя транзакция не откатывается при использовании следующего SQL:

INSERT INTO TESTSCHEMA."test" (ID, NAME) VALUES (11111, 'SDFASDFASD');

ROLLBACK;

Как мне известно из документации по DB2/iSeries:

Оператор ROLLBACK используется для завершения единицы работы и отмены изменений в базе данных, сделанных этой единицей работы.

Что является индикатором того, что единица работы началась или закончилась? Что будет откатываться в приведенном выше примере?

Буду очень благодарен за все ответы и ссылки.

PS. Я использую DB2/iSeries V5R4.

ППС. Извините за мой плохой английский


person Andriy Petrivskyy    schedule 09.02.2011    source источник
comment
Попробуйте добавить настраиваемый параметр autocommit=false в параметры подключения или URL?   -  person erloewe    schedule 10.02.2011
comment
Драйвер, который я должен использовать, не имеет опции autocommit(publib.boulder.ibm.com/infocenter/iseries/v5r4/), но я безуспешно пытался использовать упомянутый вами вариант :-(. В любом случае спасибо за помощь.   -  person Andriy Petrivskyy    schedule 11.02.2011
comment
Это зависит от настройки изоляции транзакций, которую вы установили для соединения.   -  person user2338816    schedule 03.04.2014


Ответы (2)


В DB2 все делается в рамках транзакции. Транзакция завершается с помощью COMMIT (явного или неявного) или ROLLBACK.

Имейте в виду, что по умолчанию у многих клиентов для параметра autoCommit установлено значение true, что означает, что после каждого оператора следует неявный COMMIT.

Итак, в приведенном выше примере я предполагаю, что автокоммит был включен, и INSERT был зафиксирован немедленно. Таким образом, оператор ROLLBACK ничего не сделал.

person Ian Bjorhovde    schedule 09.02.2011
comment
Спасибо за объяснение. Как я могу проверить с помощью SQL, включен ли режим автоматической фиксации? Я исследовал, что автоматическую фиксацию можно отключить из JDBC, но можно ли отключить ее с помощью SQL для соединения? - person Andriy Petrivskyy; 09.02.2011