Är det faktiska kravet att den sekundära sekvensen ska vara gapfri? I så fall har du ett jätteproblem med serialisering/skalbarhet.
Om du behöver presentera en gapfri sekvens för mänsklig konsumtion kan du använda en faktisk sekvens (eller en tidsstämpel, för den delen) som Nick Pierpont föreslår och bevara skalbarheten, du kan använda analytiska funktioner.
Datauppsättning (t1):
ID_PERSON SEQUENCE_ID
---------- -----------
1 1
2 2
3 3
1 4
1 5
1 6
2 7
3 8
1 9
SQL:
select *
from
(select id_person,
sequence_id as orig_sequence_id,
rank ()
over (partition by id_person
order by sequence_id)
as new_sequence_id
from t1
)
order by id_person, new_sequence_id;
Resultat:
ID_PERSON ORIG_SEQUENCE_ID NEW_SEQUENCE_ID
---------- ---------------- ---------------
1 1 1
1 4 2
1 5 3
1 6 4
1 9 5
2 2 1
2 7 2
3 3 1
3 8 2