Usando transacciones.
Lo mejor es definir una PK que no necesite numeración secuencial, es decir basada lo mejor posible en el modelo E-R, pero por sobre todo contorlar todo mediante transactions (
Control de Concurrencia )
¿Has estado trabajado ese tema?