Devi mantenere questi codici già esistenti o puoi "resettarli"?
In quest'ultimo caso basterebbe fare un travaso dei record tramite una query di

insert into select

e avresti tutti i tuoi codici numerati in maniera progressiva.
Non è una buona prassi quella di fare accrocchi del genere con gli id.

edit. Per trovare il primo id libero potresti ricorrere a una semplice query e integrarla eventualmente in una funzione da richiamare nella maschera

codice:
select min(t.id)+1 from tabella as t 
left join tabella as t2 ON t2.id=t.id+1
where t2.id is null
ma come ti dicevo è altamente sconsigliabile. In una situazione di inserimenti concorrenti non so come si comporterebbe.