Может ли откат работать без сохранения в DB2? - PullRequest
0 голосов
/ 09 февраля 2011

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

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

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

ROLLBACK;

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

Все в DB2 выполняется в рамках транзакции. Транзакция заканчивается на COMMIT (явном или неявном) или ROLLBACK.

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

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

0 голосов
/ 23 февраля 2011
...