>-----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