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

actualizar registro en una función trigger

Estas en el tema de actualizar registro en una función trigger en el foro de PostgreSQL en Foros del Web. Saludos Tengo una tabla A: codigo_solicitud character varying(12) relacion boolean ... Tabla B: codigo_relacion character varying(12) ... Todo registro que se inserta en B, existe ...
  #1 (permalink)  
Antiguo 25/03/2009, 14:35
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
actualizar registro en una función trigger

Saludos

Tengo una tabla A:
codigo_solicitud character varying(12)
relacion boolean
...

Tabla B:
codigo_relacion character varying(12)
...

Todo registro que se inserta en B, existe en A, de manera que al insertar en B, se debe actualizar el campo 'relacion' en A a verdadero. Para ello:

Tengo un trigger:
CREATE TRIGGER relacionarCampo AFTER INSERT ON TablaA FOR EACH ROW EXECUTE PROCEDURE relacionar()

Donde relacionar es una función:
CREATE FUNCTION relacionar() RETURNS "trigger"
AS $$BEGIN
UPDATE TablaA SET relacion = 'true' WHERE codigo_solicitud = 'NEW.codigo_relacion';
Return NEW;
END;
$$
LANGUAGE plpgsql;

Sin embargo, no llega... probé a quitarle el WHERE, y veo que sí se está ejecutando el trigger, y llega a la función, pues actualiza todos los registros...

Supongo, que estoy mal llamando (trayendo, devolviendo) el valor de codigo_relacion...
__________________
Gracias de todas todas
-----
Linux!

Última edición por cacr; 25/03/2009 a las 14:45
  #2 (permalink)  
Antiguo 25/03/2009, 15:18
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: actualizar registro en una función trigger

Un saludo cacr

CREATE TRIGGER relacionarCampo AFTER INSERT ON TablaB FOR EACH ROW EXECUTE PROCEDURE relacionar()

Donde relacionar es una función:
CREATE FUNCTION relacionar() RETURNS "trigger"
AS $$BEGIN
UPDATE TablaA SET relacion = 'true' WHERE codigo_solicitud = NEW.codigo_relacion;
Return NEW;
END;
$$
LANGUAGE plpgsql;

Debe ir sin comillas el NEW.codigo_relacion. Ademas, según lo que te entendí, el trigger se ejecuta cuando se inserte en tablaB no en tabla A.

Espero te funcione.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/03/2009, 15:25
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: actualizar registro en una función trigger

Vale! ciertamente, acabaa de probar, y he acomodado las comillas del WHERE, de manera que quedó:
BEGIN
UPDATE TablaA SET relacion = 'true' WHERE codigo_solicitud = NEW."codigo_relacion";
RETURN new;
END;

La orden de ejecución del trigger, fue un error de transcripción...

Gracias
__________________
Gracias de todas todas
-----
Linux!
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:16.