Sqlanywhere: Savepoint for rollback non trovato
-
29-09-2020 - |
Domanda
Qual è il modo corretto sull'impostazione e il rotolamento di Torna a Savepoint su SQLANYWhere.Avere questo snippet:
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;
.
Ottenere questo messaggio di errore durante l'esecuzione in DBISQL:
.Impossibile eseguire la dichiarazione.Savepoint 'SPT_ABC' non trovato SQLCODE= -220, ODBC 3 stato="HY000" linea 6, colonna 1 Puoi continuare Esecuzione o arresto.
Rollback a Savepoint SPT_ABC
Lo stesso accade quando si tenta di rollback a SPT_123.
Soluzione
Questo comportamento sembra essere causato dall'opzione di commit automatico dopo ogni comando in DBISQL configurabile tramite Strumenti-> Opzioni-> SQLANYWHERE-> Esecuzione -> "Impegnazione dopo ogni affermazione".Se questa opzione è impostata, posso riprodurre l'errore descritto sulla domanda.Deselezionato che funziona come previsto.