Sólo voy a responder a esto...
Cita: El select primero, obtenido el numero de codigo maximo
para poder hacer luego un insert con un codigo superior
al mayor existente
Pensaste como opción el uso de un campo autonumérico, autoincremental o como se llame?
Es más sencillo