Просто чтобы быть на стороне сохранения, профессионалы используют последовательности:
insert into master_table(id, x, y, z) values seq_master.nextval, :x, :y, :z;
insert into detail_table(master_id, a, b) values (seq_master.currval, :a, :b);
insert into detail_table(master_id, a, b) values (seq_master.currval, :c, :d);
...
Я бы предпочел последовательности в любой день, а не ROWID.