Trigger con plpgsql

Estado
Cerrado para nuevas respuestas.

javierec

Lanero Regular
17 May 2003
41
Tengo un problemita con un trabajo que estoy haciendo con postgres, es el siguiente:

tengo una funcion como esta:

CREATE FUNCTION insertarUsuarioEnForos(TEXT, TEXT)
RETURNS BOOLEAN
AS 'BEGIN
INSERT
INTO foros_users(username, user_password)
VALUES ($1,$2);

IF FOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;'
LANGUAGE 'plpgsql';

Luego creo un trigger que se dispare cuando se inserta un usuario en la tabla usuario que tiene los campos usu_login, usu_password, entre otros.

CREATE TRIGGER trigger_actualizar_usuarios_entre_usuario_y_foros_users
AFTER INSERT ON usuario
FOR EACH ROW
EXECUTE PROCEDURE insertarUsuarioEnForos(usu_login, usu_password);

Yo suponia que debia funcionar el trigger... pero ni siquiera me lo deja crear....

Saca este error...

ERROR: CreateTrigger: function insertarusuarioenforos() must return TRIGGER

Alguien sabe a que se debe eso? o
Alguien me podria explicar como le paso parametros a una funcion en plpgsql desde un trigger?
 

AlexHD

Lanero Regular
11 Jun 2002
12
Hola Javierec

* Primero verifica que tengas permisos.

* Segundo, debes retornar TRIGGER
pej:

CREATE FUNCTION fun_name ( args )
RETURNS TRIGGER
AS 'BEGIN
...
END;'
LANGUAGE 'plpgsql';

CREATE TRIGGER trigger
AFTER INSERT ON usuario
FOR EACH ROW
EXECUTE PROCEDURE fun_name ( args )

* Tercero en la documentacion no es muy claro, aparentemente los argumentos no van, pero mas adelante aparece. de todas formas no son necesarios ya que se puede acceder a ellos atravez de NEWRECORD

saludos de r00t.
 

javierec

Lanero Regular
17 May 2003
41
ese mensaje es viejo.....

Tenes toda la razon en la documentacion del las funciones en plpgsql no ponen parametros por que en la mayoria de las veces no se necesitan..... se pueden acceder a ellos a traves de NEW o OLD segun sea el caso...... se necesitan parametros cuando uno le quiere enviar a una funcion parametros estaticos.

Gracias por contestar ... generalmente en laneros no contestan este tipo de preguntas tan especificas.....

Nota: en este foro estas como novato.... pero definitivamente ni vos ni r00t son novatos en la programacion ni en linux.....
 
Estado
Cerrado para nuevas respuestas.