質問

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の各コマンドの後に自動コミットするオプションが原因であるようです。このオプションが設定されている場合は、質問に記載されているエラーを再現できます。それが期待通りに動作していません。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top