Terminates a transaction and undoes all changes made to the database since the program's most recent START_TRANSACTION statement or since the start of the specified transaction.
1 – Examples
The following programs demonstrate the use of the ROLLBACK statement with a transaction handle to undo changes to the database made with the STORE statement. These programs: o Start a READ_WRITE transaction, SAL_INCREASE o Store a new JOBS record using the SAL_INCREASE transaction o Use the ROLLBACK statement to undo the changes made to the database during the SAL_INCREASE increase transaction, that is, the new record is not stored in the database Note that the C program uses the pad_string function to read in the values for the STORE statement. This function pads the values stored in each field with the correct number of trailing blanks to ensure that the length of the values stored match the text size of the field. For more information on pad_string, see Appendix B of the "RDML Reference Manual".
1.1 – C Example
#include <stdio.h> DATABASE PERS = FILENAME "PERSONNEL"; extern void pad_string(); main() { int SAL_INCREASE = 0; READY PERS; START_TRANSACTION (TRANSACTION_HANDLE SAL_INCREASE) READ_WRITE; STORE (TRANSACTION_HANDLE SAL_INCREASE) J IN JOBS USING pad_string ("TYPS", J.JOB_CODE, sizeof(J.JOB_CODE)); pad_string ("1", J.WAGE_CLASS, sizeof(J.WAGE_CLASS)); pad_string ("TYPIST", J.JOB_TITLE, sizeof(J.JOB_TITLE)); J.MINIMUM_SALARY = 10000; J.MAXIMUM_SALARY = 17000; END_STORE; ROLLBACK (TRANSACTION_HANDLE SAL_INCREASE); FINISH; }
1.2 – Pascal Example
program rollback_trans (input,output); DATABASE PERS = FILENAME 'PERSONNEL'; var sal_increase : [volatile] integer := 0; begin READY PERS; START_TRANSACTION (TRANSACTION_HANDLE SAL_INCREASE) READ_WRITE; STORE (TRANSACTION_HANDLE SAL_INCREASE) J IN JOBS USING J.JOB_CODE := 'TYPS'; J.WAGE_CLASS := '1'; J.JOB_TITLE := 'Typist'; J.MINIMUM_SALARY := 10000; J.MAXIMUM_SALARY := 17000; END_STORE; ROLLBACK (TRANSACTION_HANDLE SAL_INCREASE); FINISH; end.
2 – Format
(B)0[m[4mROLLBACK[m qqwqq>qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwqk mqq> ( qq> [4mTRANSACTION_HANDLE[m qq> var qq> )qj x x lqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqj x mqqqqqqqqwqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqqqq> mq> on-error qqqqj
2.1 – Format arguments
TRANSACTION_HANDLE The TRANSACTION_HANDLE keyword followed by var a host language variable. A transaction handle identifies a transaction. If you do not supply a transaction handle explicitly, RDML uses the default transaction handle. on-error The ON ERROR clause. Specifies host language statement(s) to be performed if an error occurs during the ROLLBACK operation. For more information see the entry on ON ERROR.