Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2010, 00:43
hmartinez
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Exclamación Funciones Disparadoras

Hola muchachos, muy comedidamente me dirijo a ustedes para presentarles una duda que tengo... soy muy novato usando plpgsql pero sucede que estoy trabajando en un proyecto y estoy trabajando con Postgres.

La cuestin es la siguiente... Tengo una tabla que se llama usuarioregistrado...

CREATE TABLE usuarioregistrado
(
num_identificacion bigint NOT NULL,
tipoid character varying(50) NOT NULL,
direccion character varying NOT NULL,
correoelectronico character varying(60) NOT NULL,
telefono character(30) NOT NULL,
nombre character varying(255) NOT NULL,
estado character varying(20),
"login" character varying(20),
clave character varying,
tipo character varying,
CONSTRAINT num_identificacion_pk PRIMARY KEY (num_identificacion)
)


y necesito crear un crear un trigger, o para que cada vez que se haga una actualizacion... los usuarios cuando se registran, no se les asigna una clave inmediatamente y se les coloca en el campo de estado 'ESPERA', tiene el administrador hacer update del estado a 'ACTIVO', es aqui donde necesito que el trigger entre en accion y le asigne la clave a los usuarios, la cual tiene que ser el mismo numero de identificacion con el que se registraron....

aqui dejo la funcion que tengo pero que sale ERROR

CREATE OR REPLACE FUNCTION actualizar()
RETURNS trigger AS
$BODY$BEGIN
IF (TG_OP = 'UPDATE' AND OLD.estado == 'ESPERA' AND NEW.estado == 'ACTIVO') THEN
UPDATE usuarioregistrado SET clave = OLD.num_identificacion;
END IF;
RETURN NULL;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION actualizar() OWNER TO postgres;

y el trigger que utilizo es ....

CREATE TRIGGER we
AFTER UPDATE
ON usuarioregistrado
FOR EACH ROW
EXECUTE PROCEDURE actualizar();

si alguien puede ayudarme se lo agradeceria en el alma.... de todas formas inmensas gracias de antemanos para todos los que se tomen un tiempito a mirar el problema.....