Я пытаюсь узнать, как транзакции работают в БД, и для этого я написал следующий тест SQL:
SAVEPOINT STOP_HERE ON ROLLBACK RETAIN CURSORS;
INSERT INTO TESTSCHEMA."test" (ID, NAME) VALUES (89898, 'SDFASDFASD');
ROLLBACK TO SAVEPOINT STOP_HERE;
SELECT * FROM TESTSCHEMA."test";
После выполнения этого кода одна строка добавляется в таблицу. Но если я добавлю следующую строку в начале:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
все работает, как я и ожидал, т.е. транзакция корректно откатывается и новых записей в БД нет, но если я снова запускаю этот код, Data Studio выдает ошибку в первой строке:
[SQL0428] SQL statement can not be launched.
Итак, мои вопросы:
Есть ли способ получить текущий уровень изоляции и почему я не могу установить уровень изоляции более 1 раза?
Буду очень благодарен за все ответы и ссылки.
PS. Я использую DB2 / iSeries V5R4.
PPS. Извините за мой плохой английский