Difference between revisions of "ROLLBACK"
Yvonnemilne (Talk | contribs) |
Helengeorge (Talk | contribs) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Purpose== | ==Purpose== | ||
Restore tables to their condition at the beginning of a transaction | Restore tables to their condition at the beginning of a transaction | ||
Line 15: | Line 8: | ||
==See Also== | ==See Also== | ||
− | [[BEGIN TRANSACTION]], [[ | + | [[BEGIN TRANSACTION]], [[COMPLETED()]], [[END TRANSACTION]], [[ISMARKED()]], [[RESET IN]], [[SET ROLLBACK]] |
Line 41: | Line 34: | ||
<code lang="recital"> | <code lang="recital"> | ||
procedure recovery | procedure recovery | ||
− | + | rollback | |
− | dialog box "Rollback was ok." | + | if rollback() |
− | else | + | dialog box "Rollback was ok." |
− | dialog box "Rollback not completed." | + | else |
− | endif | + | dialog box "Rollback not completed." |
+ | endif | ||
return | return | ||
Line 51: | Line 45: | ||
on error do recovery | on error do recovery | ||
begin transaction | begin transaction | ||
− | delete first 15 | + | delete first 15 |
− | replace all t1 with (t2*t3)/100 | + | replace all t1 with (t2*t3)/100 |
− | list | + | list |
end transaction | end transaction | ||
if completed() | if completed() | ||
− | dialog box "Transaction completed | + | dialog box "Transaction completed |
else | else | ||
− | dialog box "Errors occurred during transaction" | + | dialog box "Errors occurred during transaction" |
endif | endif | ||
</code> | </code> | ||
Line 64: | Line 58: | ||
==Products== | ==Products== | ||
− | Recital | + | Recital Server, Recital |
[[Category:Documentation]] | [[Category:Documentation]] | ||
[[Category:Commands]] | [[Category:Commands]] | ||
+ | [[Category:Transaction Processing]] | ||
+ | [[Category:Transaction Processing Commands]] |
Latest revision as of 16:31, 12 November 2009
Purpose
Restore tables to their condition at the beginning of a transaction
Syntax
ROLLBACK [<workarea | alias> | (<expC>)]
See Also
BEGIN TRANSACTION, COMPLETED(), END TRANSACTION, ISMARKED(), RESET IN, SET ROLLBACK
Description
The ROLLBACK command is used in a BEGIN TRANSACTION ... END TRANSACTION block to roll back changes made to tables by any transaction performed between the two statements. ROLLBACK used by itself affects all open tables, but can be directed to a single table by specifying the <.dbf filename>. The filename can be substituted with an <expC>, enclosed in round brackets, which returns a valid filename. A 'transaction' is considered to be all the file modifications that occur within the commands BEGIN TRANSACTION and END TRANSACTION.
This command is particularly useful if an error occurs during a program modifying files. When BEGIN TRANSACTION is issued, all currently open files and all files opened between BEGIN and END TRANSACTION will have Before Image Journaling (BIJ) invoked automatically. The journals are stored in a log file <.log> that the Recital/4GL generates automatically. You can optionally specify the disk and directory path if you include them after the BEGIN TRANSACTION statement. If BIJ is not required on a particular file, then the command RESET IN <workarea> should be issued and journaling will no longer occur in that workarea.
The ROLLBACK() function returns .T. if a rollback succeeds. The COMPLETED() function can be used after the END TRANSACTION command to determine if any errors occurred during processing of the commands between BEGIN and END TRANSACTION. It returns .F. if errors occurred and .T. otherwise. If the command SET ROLLBACK is OFF, the COMPLETED() function can be used in conjunction with the ROLLBACK command to force a manual rollback. If SET ROLLBACK is ON and an error is encountered, any modifications to files within the transaction will be rolled back automatically to their state before the BEGIN TRANSACTION was executed.
Please note the following commands are not allowed during a transaction:
- CLEAR ALL
- CLOSE ALL
- CLOSE DATABASE
- CLOSE INDEX
- MODIFY STRUCTURE
- PACK
- ZAP
If users do not have a specific reason for setting up manual error trapping and rollback routines using the ROLLBACK command, Recital Corporation recommends the use of the SET ROLLBACK ON command to perform automatic Before Image Journaling and rollback.
Example
procedure recovery rollback if rollback() dialog box "Rollback was ok." else dialog box "Rollback not completed." endif return use setcomm on error do recovery begin transaction delete first 15 replace all t1 with (t2*t3)/100 list end transaction if completed() dialog box "Transaction completed else dialog box "Errors occurred during transaction" endif
Products
Recital Server, Recital