SQLAnywhere:SavePoint for Rollbackが見つかりません
-
29-09-2020 - |
質問
SQLAnywhereでSavePointに設定してロールバックする正しい方法は何ですか。このスニペットを持つ:
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にロールバックしようとしたときに同じことが起こります。
解決
この動作は、ツール - > options-> sqlAnywhere->実行 - >「すべてのステートメントの後のコミット」を介してDBISQLの各コマンドの後に自動コミットするオプションが原因であるようです。このオプションが設定されている場合は、質問に記載されているエラーを再現できます。それが期待通りに動作していません。
所属していません dba.stackexchange