En términos generales, eso de sumar 1 al máximo no funciona según lo encontrará en el 99.999% de los lugares en Internet. Esto se debe a que no garantiza un valor único y válido en sistemas multiusuario.
Como ejemplo le muestro una conversación super agitada que tuvimos hace poco: Sugerencias
para manejar un campo incremental y consecutivo por llave foránea en una tabla
Como verá, el asunto es mucho muy complicado.
En su caso, la recomendación más sana que le puedo dar es: Recrear la tabla con un autonumérico. Luego llena los registros en la nueva tabla. Puede conservar los ID's. En SQL Server usted puede usar la sentencia
Set Identity_Insert <nombre de tabla> On;, luego hacer la copia de los registros viejos, luego apagar el
IDENTITY_INSERT.
Si no, lo invito a ver la conversación en el detalle. Si ha de usar MAX() tiene que usar una transacción serializable y utilizar una tabla auxiliar de mutexes y básicamente programar el procedimiento almacenado de inserción de registros como si estuviera
programando multi hilos en C++ o C#.
Jose R. MCP
Code Samples