Er det faktiske krav, at den sekundære sekvens skal være mellemrumsfri? Hvis ja, har du et kæmpe problem med serialisering/skalerbarhed.
Hvis du har brug for at præsentere en hulfri sekvens til konsum, kan du bruge en faktisk sekvens (eller et tidsstempel, for den sags skyld), som Nick Pierpont foreslår og bevare skalerbarheden, du kan bruge analytiske funktioner.
Datasæt (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