Hola si usas un ID de tipo enter, podrias hacer uso de una Secuencia(SEQUENCE).
Código SQL:
Ver original/*Secuencia para la tabla principal*/
CREATE SEQUENCE orders_seq
INCREMENT BY 1 --> Va incrementarse de 1 en 1.
START WITH 100 --> El valor con el cual va empezar la secuencia, en tu caso seria el ultimo id de tu tabla.
maxvalue 25 --> Valor maximo
nocache; -->No guarda dato en cache.
/*Secuencia para la tabla detalle.*/
CREATE SEQUENCE order_lines_seq START WITH 200; --> el valor que va empezar el detalle supongamos que es 200.
BEGIN
-- Usar NEXTVAL para generar el siguiente id.
--orders_seq.NEXTVAL=101
INSERT INTO orders (id, description)
VALUES (orders_seq.NEXTVAL, 'Dummy order description.');
-- Usar CURRVAL para traer el valor actual de la secuencia de la tabla Principal y usarlo en el detalle.
--orders_seq.CURRVAL=101
--order_lines_seq.NEXTVAL=201
INSERT INTO order_lines (id, order_id, description)
VALUES (order_lines_seq.NEXTVAL, orders_seq.CURRVAL, 'Dummy order line description');
COMMIT;
END;
/
SQL> SELECT * FROM orders ORDER BY id;
ID DESCRIPTION
---------- --------------------------------------------------
101 Dummy ORDER description.
2 ROWS selected.
SQL> SELECT * FROM order_lines ORDER BY id;
ID ORDER_ID DESCRIPTION
---------- ---------- --------------------------------------------------
201 101 Dummy ORDER line description
2 ROWS selected.
SQL>