Вопрос

Какой правильный способ настройки и возврата к 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-> выполнение -> «Официально после каждого утверждения».Если эта опция установлена, я могу воспроизвести ошибку, описанную на вопрос.Не проверил, это работает как ожидалось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top