PostgreSQL - ejecutar Funcion

 
Vista:

ejecutar Funcion

Publicado por Nicko (16 intervenciones) el 01/10/2003 21:00:37
Hola amigos

Mi duda es la siguiente, saben ustedes como debo crear una funcion o procedimiento almacenado o ambos, no se.
Deseo hacer que al modificar un registro en una tabla, ejecute una sentencia sql para alterar otra, alguien de ustedes sabe como lograr eso.

De antemano Muchas Gracias

P.D. Me instale el postgreSQL en Windows con CygWin pero no se como instalar las librerias de lenguajes (de programacion) pues me marca un error al ejecutar una creacion de funcion. (No las tengo, como las consigo)

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ejecutar Funcion

Publicado por David Pinelo (82 intervenciones) el 02/10/2003 13:44:26
Brevemente. Lo que necesitas es un TRIGGER. Lo hacemos en PL/pgSQL. Para ello, desde la línea de comandos de cygwin ejecuta createlang plpgsql tu_base_de_datos. Y ahora creamos el trigger:

CREATE FUNCITION trig_mi_trigger () RETURNS opaque AS '
DECLARE
tus_variables
BEGIN
UPDATE tu_otra_tabla SET tu_otro_campo = NEW.valor_a_actualizar_de_tu_tabla WHERE id = NEW.id;
END'
LANGUAGE 'plpgsql';

CREATE TRIGGER trig_modifico_otra_tabla AFTER (o BEFORE ... depende) UPDATE (o INSERT o DELETE, según tus necesidades) EXECUTE trig_mi_trigger();

La sintaxis probablemente no es correcta del todo (lo siento, no tengo ningún ejemplo a mano, pero en la documentación los hay a patadas), pero espero que te sirva de guía.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pero como se que registro se modifico

Publicado por Nicko (16 intervenciones) el 03/10/2003 04:55:58
Ya esta, si funciono perfectamente, Pero ahora como puedo tomar como parametro, el campo llave de la tabla1 para alterar la informacion de la tabla2 en base a referencia, (Osea, como saber cual registro fue modificado para alterar otro, pues es una BD relacional) si altero un registro en una tabla, debo alterar otro en otra pero que estan relacionados.

De antemano, Gracias por su respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pero como se que registro se modifico

Publicado por David Pinelo (82 intervenciones) el 03/10/2003 10:47:39
A ver, brevemente. Cuando programas un trigger, éste se dispara cuando se hace un INSERT, UPDATE o DELETE de un registro. Dentro de la función del trigger tú tienes dos objetos tipo record (o tipo "registro") disponibles: NEW y OLD. NEW contiene los datos modificados del nuevo registro (en un update tendría los datos que acabas de modificar, y en un insert los que vas a insertar). OLD contiene los datos antiguos (en un update contiene los datos justo antes de modificar). De este modo, si tu tabla1 tiene un campo clave id_master, en tu trigger sabes que se ha modificado el registro de id: NEW.id_master, y con ese id deberás tocar la tabla2.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ejecutar Funcion

Publicado por danitzel Panama (3 intervenciones) el 29/07/2004 18:01:01
encontraste la forma de entrar o ejecutar las funciones estoy en la misma que tu no puedo si utilizo phpadmin casi todo lo que hago me da error me puedes ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar