ROWID columns


When creating a table, Informix automatically adds a ROWID integer column (applies to non-fragmented tables only).

The ROWID column is auto-filled with a unique number and can be used like a primary key to access a given row.


Informix ROWID usage was a common practice in the early days of Informix 4GL programming. Today it is recommended to define all your database tables with a PRIMARY KEY to uniquely identify rows.

With Informix, the sqlca.sqlerrd[6] register contains the ROWID of the last row affected by an INSERT, UPDATE or DELETE statement.


SQLite supports ROWID columns as 64-bit integers. Informix rowids are 16-bit integers.


If your Genero BDL application uses rowid columns, review the program logic to use primary keys insead. If the database table does no define a primary key, it should be added. All references to SQLCA.SQLERRD[6] must be removed, because this variable will not hold the ROWID of the last modified row.

If you cannot avoid the use of rowids, you must change the type of the variables which hold ROWID values. Instead of using INTEGER, use DECIMAL(20).

For databases where the keyword of the rowid pseudo-column is different than "ROWID", the translation can be controlled with the following FGLPROFILE entry:
dbi.database.dsname.ifxemul.rowid = { true | false }
For more details see IBM Informix emulation parameters in FGLPROFILE.