Transaction processing enables you to group a set of data file updates together into one logical unit of work, known as a transaction.
The changes you make as part of a transaction can be:
- Permanently reflected in the data files by committing the work
- Removed from the data files by rolling back the work. When a transaction is rolled back, the Fileshare Server returns the data files to the state they were in before the transaction started.
A transaction can include multiple updates to multiple data files on multiple Fileshare Servers.
A transaction starts when your program performs the first update operation (WRITE, REWRITE or DELETE) on a file which has the WITH ROLLBACK clause defined in its SELECT statement after:
- The file is opened
- A COMMIT or ROLLBACK statement is executed
A transaction terminates when:
- A COMMIT verb is executed
- A ROLLBACK verb is executed
- The transaction is timed out. See the section
Automatic Record Lock Timeout for further information.
Notes:
- The COMMIT and ROLLBACK verbs release all the record locks held by a program on every data file. This does not depend on whether or not you specified the WITH ROLLBACK clause for a particular file.
- The time taken to process a COMMIT or ROLLBACK operation is directly proportional to the number of updates performed in that transaction.
- If you try to CLOSE a file that is participating in an active transaction, a 9/100 error status is returned and the file remains open. A COMMIT or ROLLBACK needs to be issued before the CLOSE can be executed.
- When you use the WITH ROLLBACK clause, multiple record locking is implicitly defined on the file.
Before using transaction processing you are strongly advised to do the following to ensure the highest level of integrity for your data:
- Include any file on which transaction processing is to be performed in the database reference file of the Fileshare Server that services the I/O requests for that file. See the section
Database Reference File Maintenance for further information.
- Specify a rollforward recovery log file in the database reference file. See the section
Rollforward Recovery Logging for further information.
Record locks are implicitly obtained on every record that is updated in a transaction. If a transaction is temporarily suspended, for example, if your program requests input and the user is not responding, record locks can remain in the file for a considerable length of time. If another Fileshare Client tries to access the locked records, and a specified length of time has passed, the Fileshare Server aborts (rolls back) the transaction. When this happens, the transaction is said to be timed out by the Fileshare Server. See the section
Automatic Record Lock Timeout for further information.
Note:
By keeping the number of updates performed in a transaction to a minimum, the number of record locks obtained is also kept to a minimum. This reduces the number of record locking conflicts between Fileshare Clients sharing the data, and increases the speed of any subsequent COMMIT or ROLLBACK operations.