In teoria, ma è da testare per il tuo caso specifico, già il fatto di andare ad aggiornare il numerello in fase di inserimento dovrebbe coprirti le spalle.
Quando un rdms, di fatto, và ad aggiornare il database, di fatto blocca temporaneamente il file, tenendo in coda le richieste successive.
Nella stessa INSERT, dovresti mettere l'istruzione "select campo + 1 from tabella", direttamente nello stesso comando insert.
Ad esempio:
INSERT INTO tabella VALUES ((SELECT MAX(numero)+1 FROM tabella), ... altri campi)
Questo, se te lo permette la versione del db, dovrebbe assicurarti l'unicità e la sequenzialità del numerello.
In alternativa, dovresti poter lockare temporaneamente la tabella (esistono comandi appositi), e con un'unica sessione determinare prima il numero da inserire, e poi salvarlo con l'insert. Questa seconda alternativa ti permette di conoscere immediatamente il numero utilizzato, mentre con la prima non lo puoi sapere.
I rdbms più evoluti (vedi PostgreSQL e MySQL), attraverso i trigger e le funzioni, potenziano di molto queste possibilità, permettendoti di creare apposite procedure che fanno i dovuti controlli e gli inserimenti necessari, indipendentemente dal programma. Questo perchè risiedono sul server, e non sui client, per cui sono slegati da false tempificazioni.