Defining the ROWID
- Last Updated: February 11, 2026
- 3 minute read
- OpenEdge
- Version 13.0
- Documentation
Defining the ROWID
When you create or update a schema holder, the DataServer uses
the following guidelines to select a column in a data source table
to support the ROWID function:
- If the data source table has a
PROGRESS_RECIDcolumn, the DataServer selects that column. A column of this type provides optimal support for theROWIDfunction; you cannot select an alternative to it. To create aPROGRESS_RECIDcolumn, see Using triggers to enable PROGRESS_RECID support of the ROWID function. - If the data source table does not have a
PROGRESS_RECIDcolumn, the DataServer evaluates the available indexes and selects one according to the following criteria:- The index must be defined as unique.
- The index must be defined as mandatory, or at least treated as such by your application.
The index selection process proceeds, according to the following order:
- If you select an index, then you must select a qualified index.
-
If you do not select an index, the MS SQL Server DataServer selects a qualified index based on a single-component integer.
However, if the DataServer determines that more than one qualified index meets the additional criterion as a single-component integer, the DataServer selects the first index that fulfills the complete criteria.
-
If the MS SQL Server DataServer cannot find a qualified index based on a single-component integer, it seeks a qualified index that is multi-component and/or non-integer.
However, if the DataServer determines that more than one qualified index meets the additional criterion as multi-component and/or non-integer, the DataServer selects the first index that fulfills the complete criteria.
-
If the MS SQL Server DataServer cannot find a qualified index that is a multi-component and/or non-integer, the task cannot be completed and
ROWIDsupport is not provided. The table will not be able to uniquely identify any records. As a result, implementingFINDstatements and performing queries could lead to inaccuracies in locating records.
The indexes in this class are not mandatory; therefore,
it is essential that you enforce the column supporting ROWID as mandatory
at least through code if not through definitions.
The DataServer allocates a buffer to hold the key information for the selected
RECID index. The buffer is 245 bytes by default. If the index you select
for the RECID is a multi-component index, this may be inadequate. The size of
the buffer can be modified with the -Dsrv
ZPRGRS_RECID_BUF_SIZE,n option. See Old format RECID Buffer size: the ZPRGRS_RECID_BUF_SIZE,nnn Option for more information on
setting this option.
ROWID must
be defined as a unique index. It must also be mandatory, if not
by definition, then by means of the application code.