Transaction
SQLAnywhere:未找到 ROLLBACK 的保存點
在 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”進行配置。如果設置了此選項,我可以重現問題中描述的錯誤。未選中它按預期工作。