Transaction

SQLAnywhere:未找到 ROLLBACK 的保存點

  • August 30, 2015

在 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 中的每個命令後自動送出的選項引起的,可通過 Tools->Options->SQLAnywhere->Execution->“Commit after every statement”進行配置。如果設置了此選項,我可以重現問題中描述的錯誤。未選中它按預期工作。

引用自:https://dba.stackexchange.com/questions/112529