Hola comunidad soy nuevo con postgre y bueno leyendo la documentacion sobre disparadores pues hice el siguiente disparador,y procedimiento los cuales deseo que hagan es lo siguiente cada vez que ingrese o actualice un registro en la table usuario ,encripte la contrasena con la funcion encrypt bueno ahora coloco el codigo que he realizado:
CREATE OR REPLACE FUNCTION encriptar() RETURNS TRIGGER AS $encriptacion$
DECLARE
BEGIN
NEW.contrasena := encrypt(NEW.contrasena,'prueba');
RETURN NEW;
END;
$encriptacion$ LANGUAGE plpgsql;
a claro que ya instale las funciones que vienen en el archivo pgcrypto.sql para cargar las utilidades de postgre y ya instale el plpgsql.
el error que me marca es que me dice que no encuentra la funcion encrypt este es el msj
ERROR: no existe la función encrypt(character varying, unknown)
SQL state: 42883
Hint: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos.
Context: PL/pgSQL function "encriptar" line 4 at asignación
Gracias por la ayuda.
Re: error al ejecutar disparador en postgre
Jue, 11/02/2010 - 09:27 — rafaelmaERROR: no existe la función encrypt(character varying, unknown) SQL state: 42883
Hint: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos.
Context: PL/pgSQL function "encriptar" line 4 at asignación
El problema es que no existe la funcion encrypt() como la estas usando. De todas formas no recomiendan este método en las páginas de pgcrypto.
Usa por ejemplo esto para crear el hash de tu clave:
Tienes bastantes tipos de algoritmos disponibles. Los disponibles por defecto son: md5, sha1, sha224, sha256, sha384 and sha512.
Más información en:
http://www.postgresql.org/docs/current/interactive/pgcrypto.html
http://www.postgresql.org/docs/current/interactive/pgcrypto.html#PGCRYPT...
--
Rafael Martinez
PostgreSQL-es.org
gracias(post resuelto)
Vie, 12/02/2010 - 06:00 — genosukegracias funciona perfectamente pero porque no recomienda usar encrypt supuestamente esla funcion mas segura no ?
Enviar nuevo comentario