Sqlanywhere: SavePoint для отката не найден
-
29-09-2020 - |
Вопрос
Какой правильный способ настройки и возврата к SavePoint на SQLAnywhere.Наличие этого фрагмента:
begin transaction;
SAVEPOINT spt_abc;
insert into eins (pl1) values (5);
SAVEPOINT spt_123;
UPDATE eins SET pl1 = 10 where pl1 = 5;
ROLLBACK TO SAVEPOINT spt_abc;
commit;
.
Получение этого сообщения об ошибке при запуске его в DBISQL:
не может выполнить оператор.SavePoint 'SPT_ABC' не найден SQLCode= -220, ODBC 3 State= «Hy000» линия 6, столбец 1 Вы можете продолжить выполнение или остановка.
Откат к SavePoint SPT_ABC
То же самое происходит при попытке откатиться к SPT_123.
Решение
Это поведение, по-видимому, вызвано вариантом автоматического коммитария после каждой команды в DBISQL настраиваемым через инструменты-> Опции-> SQLAnywhere-> выполнение -> «Официально после каждого утверждения».Если эта опция установлена, я могу воспроизвести ошибку, описанную на вопрос.Не проверил, это работает как ожидалось.