Puede usar una tabla, una secuencia para generar valores de ID únicos y un disparador.
Por ejemplo:
Mesa:
CREATE Table FITNESS_BMR
(
ID NUMBER NOT NULL PRIMARY KEY,
VALUE FLOAT NOT NULL,
VALUE_DATE DATE NOT NULL
);
Secuencia:create sequence t1_seq start with 1 increment by 1 nomaxvalue;
Activador:
CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON FITNESS_BMR
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT t1_seq.nextval INTO :NEW.ID FROM dual;
END;
/