Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Funciones Disparadoras

Estas en el tema de Funciones Disparadoras en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/11/2010, 00:43
 
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.....
  #2 (permalink)  
Antiguo 21/11/2010, 21:00
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Funciones Disparadoras

Que error sale?
creo que el == en la comparación del IF no es valida.
Prueba solo con un igual.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: funciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.