Data Type Numeric with packing code A, actually mapped only to Sybase identity storage format, should be extended and normalized to all DBMS drivers. Identities should be by default mapped as part of same transaction running in the Uniface component. Nice variations could be: - Identity with or without holes in the sequence. - Identity with holes in the sequence could be overwritten or not by a user input to close a gap in the sequence.
How to deal with it on major Uniface supported DBMSes: - Oracle: Create mySequence object + insert into table_name (ID) VALUES (mySequence.nextval) - mySQL: AUTO_INCREMENT keyword - SQL Server: IDENTITY(x,y) keyword - Sybase: IDENTITY(x,y) keyword - DB2: create table table_name (ID integer not null GENERATED \\\'ALWAYS\\\'|\\\'BY DEFAULT\\\' AS IDENTITY (START WITH 1 INCREMENT BY 1) or create mySequence object + insert into table_name (ID) VALUES (mySequence.nextval) - IBM Solid: Create mySequence object + insert into table_name (ID) VALUES (mySequence.nextval) - Embedded DB: Fields of type CEVT_AUTO_I4 and CEVT_AUTO_I8 can not be assigned a value—when a new record is created, EDB automatically assigns these fields a number, starting at 1 (they are unsigned). - SQLite3: SQLite keeps track of the largest ROWID that a table has ever held using an internal table named \\\'sqlite_sequence\\\'. The sqlite_sequence table is created and initialized automatically whenever a normal table that contains an AUTOINCREMENT column is created. Minor Uniface supported DBMSes: - Sequential: Uniface counter with standard name? - Text: Uniface counter with standard name? - Informix: serial - RdB: Sequence and sequence generator - RMS: Uniface counter with standard name? - LDAP: N/A Other DBMSes: - Microsoft Jet SQL: Counter - Access: AUTOINCREMENT keyword - PostgreSQL: serial, 4 bytes autoincrementing integer 1 to 2147483647 - FireBird: generator = sequence: if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_T1_ID, 1);
Low | Medium