Use NO-UNDO variables and temp-tables
- Last Updated: January 22, 2026
- 1 minute read
- OpenEdge
- Version 12.8
- Documentation
When variables without the NO-UNDO qualifier are updated, a before-image of
the previous value is generated in what amounts to a separate record buffer for all
NO-UNDO variables. This is useful when you want the original value
restored when you UNDO a block or transaction. When you do not need
this capability, the before-image generation is needless overhead. Use of
NO-UNDO also causes the ABL local before-image
(.lbi) file, which is maintained for each user connected to a
database, to be smaller. As noted in Use Basic ABL Constructs when this guide
first introduced the DEFINE VARIABLE statement, it is unusual for
variables to require the UNDO support that they receive by default. So,
it is a good practice to make the NO-UNDO keyword a standard part of
your variable definitions unless a particular variable really needs the support.
Alternatively, you can use the newer VAR
statement to define a variable, which has NO-UNDO behavior
by default.
With temp-tables the situation
is not always as clear. There might be cases where you are adding records to a
temp-table or changing records in a temp-table within a transaction, and you want to be
able to undo those changes. If this is not the case, however, you benefit significantly
from defining the temp-table with the same NO-UNDO qualifier as for
variables. This spares you from having the ABL Virtual Machine (AVM) create a
before-image of every temp-table change made within a transaction.