135 messaggi dal 01 febbraio 2017
Salve a tutti, ho un dubbio sulle Transaction nidificate.
Supponiamo di avere una subroutine es. SUB A che inizia un ciclo di aggiornamenti con una TRANSACTION ed alla fine esegue il relativo COMMIT (se tutto va bene).

Ora supponiamo di avere una SUB B che fa la stessa cosa, però prima di terminare, chiama la SUB A (che avrà la sua Begin).

La domanda è : se dopo l'esecuzione della SUB A, nella SUB B viene eseguito il ROLLBACK, viene abortita tutta la sequenza di aggiornamenti, oppure quelli eseguiti dentro la SUB A (che ha avuto il suo COMMIT) rimangono definitivamente ?

Esempio :

SUB A ()
...
BEGIN TRANSACTION
IF errore
ROLLBACK
END IF
...
.. istruzioni
aggiorna C
aggiorna D
...
COMMIT
END SUB

SUB B ()
...
BEGIN TRANSACTION
SUB A()
...
istruzioni
IF errore
ROLLBACK
????? cosa succede qui ?
END IF
...
.. istruzioni
aggiorna H
aggiorna J
aggiorna Y
...
COMMIT
END SUB

Tutto ciò ovviamnete per evitare di ripetere il codice della sub A, anche in B.
Grazie.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
244 messaggi dal 22 gennaio 2017
Contributi
Se le transazioni sono realmente nested, se una fallisce deve essere eseguito il rollback di tutto
Modificato da andrea.tosato86 il 30 ottobre 2017 12.48 -
135 messaggi dal 01 febbraio 2017
andrea.tosato86 ha scritto:
Se le transazioni sono realmente nested, se una fallisce deve essere eseguito il rollback di tutto
Modificato da andrea.tosato86 il 30 ottobre 2017 12.48 -


Vuoi dire che lo esegue lui in automatico con la rollback nella SUB chiamante, oppure che lo devo gestire io in qualche modo ?

La logica mi dice che debba essere automatica, però ne vorrei la certezza.
Grazie.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
135 messaggi dal 01 febbraio 2017
Ok, grazie.
Ciao.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.