ROWID columns
Informix®
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.
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 modified row.
Netezza®
Netezza implements ROWIDs like Informix, except that the rowids are stored in a 64 bit integer.
Solution
If the BDL application uses
ROWIDs, it is recommended that the program logic is reviewed in order to use the real primary keys
instead (usually serials, which can be supported). All references to
SQLCA.SQLERRD[6] must be removed because this variable will not hold the
ROWID of the last modified row.
ROWIDs can be used with Netezza as with Informix, as long as you fetch rowid values into a
BIGINT variable. However, the SQLCA.SQLERRD[6] register cannot be
supported, because Netezza rowids are 64 bit integers
(BIGINT) while SQLCA.SQLERRD[6] is a 32 bit integer
(INTEGER).
ROWID keyword
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.