posted 19 years ago
The limitation would be the data type of the underlying column(s) of the primary key. The more recent versions of Firebird/Interbase/Phoenix support 64-bit integers. (I'm assuming your primary key column is an integer type.)

Oracle is a little bit different with its numeric datatypes. The ANSI datatype INTEGER in Oracle is a synonym for NUMBER(38), which represent a number with up to 38 digits, which can overflow even a 64-bit integer type. The Interbase INTEGER type is 32-bit.

Firebird/Interbase supports up to 18 digits of exact numerics with the NUMERIC(18) data type, if you use SqlDialect 3. NUMERIC(18) is equivalent, at least approximately, to a 64-bit integer.

Do you have more than a 64-bit integer's worth or rows in your tables? If the primary key column in your Firebird database is NUMERIC(18) and your Oracle keys are still too big, you have a problem.

Assuming the original range of keys is sparse, you could to devise a scheme to regenerate the primary keys in Firebird, while maintaining your FK constraints of course. You could also try defining your primary key as two columns of NUMERIC(18) and split the original key in half when you insert.