在 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' not found SQLCODE=-220, ODBC 3 State="HY000" 第 6 行,第 1 列 您可以继续执行或停止。
回滚到保存点 spt_abc
尝试回滚到 spt_123 时也会发生同样的情况。
此行为似乎是由 dbisql 中可通过工具->选项->SQLAnywhere->执行->“在每个语句后提交”配置的在每个命令后自动提交的选项引起的。如果设置了此选项,我可以重现问题中描述的错误。未选中它按预期工作。