>-----Mensaje original-----
>De: pgsql-es-ayuda-ow...@postgresql.org [mailto:pgsql-es-ayuda-
>ow...@postgresql.org] En nombre de Rafael Martinez
>Enviado el: jueves, 08 de octubre de 2009 16:03
>Para: Gorka
>CC: POSTGRES
>Asunto: Re: [pgsql-es-ayuda] Crear claves aleatorias
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Gorka wrote:
>> ¿Hay alguna manera en postgres de crear una función que genere
>passwords
>> aleatorias?
>>
>
>Hola
>
>Te mando esta funcion que puedes utilizar para generar claves
>aleatorias. El parametro aleatorio lo define la funcion random().
>
>- ----------------------------------------------------------------------
>--
>CREATE OR REPLACE FUNCTION generate_password(integer) RETURNS TEXT AS $$
>DECLARE
>  len ALIAS FOR $1;
>  cnt INTEGER;
>  password TEXT :='';
>
>  characters_not_included TEXT := E''',-./:;<>@^_`\\';
> BEGIN
>
>  FOR cnt IN 1..len LOOP
>    password := password || chr(round((random()*87)+35)::integer);
>  END LOOP;
>
>  password :=
>translate(password,characters_not_included,substr(md5(random()::text),ro
>und((random()*(32-
>char_length(characters_not_included))))::integer,char_length(characters_
>not_included)));
>
>RETURN password;
>
>END;
>$$ LANGUAGE plpgsql;
>- ----------------------------------------------------------------------
>--
>
>Ejemplo:
>
>SELECT generate_password(8);
> generate_password
>- -------------------
> r58R1N=Z
>(1 row)
>

Hola.
Parece un poco más aleatoria que la función anterior, ya que combina algunos
caracteres (además de letras y dígitos).
Al ejecutar la query en la ventana SQL del Pgadmin III me da el siguiente
error:

ERROR: no existe el lenguaje «plpgsql»
Estado SQL:42704
Sugerencias:Usar CREATE LANGUAGE para instalar el lenguaje en la base de
datos.

¿No es plpgsql el lenguaje en sí que utiliza postgres? ¿Qué tengo que poner
"CREATE LANGUAGE plpgsql;"? ¿Esto no afectará a la base de datos, verdad? Es
que me da un poco de miedo porque está en producción.


--
TIP 5: ¿Has leído nuestro extenso FAQ?
         http://www.postgresql.org/docs/faqs.FAQ.html

Reply via email to