ROWIDs

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.

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

With Informix, SQLCA.SQLERRD[6] contains the ROWID of the last INSERTed or UPDATEd row. This is not supported with SQLite because SQLite ROWIDs are not INTEGERs.

Solution

If the BDL application uses Informix ROWIDs as primary keys, the program logic should be reviewed in order to use the real primary keys.

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

Note: All references to SQLCA.SQLERRD[6] must be removed because this variable will not contain the ROWID of the last INSERTed or UPDATEd row when using the SQLite interface.