La primera opción sería usar un campo AutoIncremental, si es que lo tienes disponible, con eso evitas trabajo (buscar el máximo y sumar 1) y evitas problemas.
Si no puedes usar Autoincrementales, debes hacer ambas operaciones dento de la misma transacción. Si es necesario, modificas el IsolationLevel de la transacción y con eso deberías eviar duplicados.
Aunque como he comentado, no es la práctica recomendable en SGBD's bloquear tablas. Las transacciones son para otros menesteres.
|