ayuda con triggers y funciones....

From: vladito <vladimircs(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org, minoztro(at)gmail(dot)com
Subject: ayuda con triggers y funciones....
Date: 2007-05-03 17:16:44
Message-ID: bd5237870705031016w758236e0jdbe2783472fa5eed@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

buenas señores....
disculpen por hacer una pregunta como esta pero realmente es urgente su
ayuda...
y esta es mi primer funcion-trigger

resumo el problema, tengo 4 tablas relacionadas la primera que guarda los
datos
de una persona (gr_persona), la segunda que guarda la información
del trabajador (ac_obrero) la tercera que guarda documentos de los
trabajadores nacionales (obr_doc_n) y la cuarta documentos
de los trabajadores extranjeros (obr_doc_e).

Ahora bien los datos de los documentos deben pertenecer ya sea a los
extranjeros o a
los nacionales NUNCA a ambos

por lo que necesito un trigger en la tabla de personas donde se almacena la
nacionalidad,
entonces lo que necesito es que el trigger se active cuando el campo
per_pai_id cambie,
de tal forma que si un obrero esta registrado como nacional, y se le cambia
la nacionalidad
a extranjero, se busque en la correspondiente tabla y se elimne los
documentos registrados

otro detalle es que la tabla de persona con la de los documentos no se
relaciona directamente,
para relacionar estas tablas se utiliza la tabla trabajador, es decir a
partir de la tabla
persona, se obtiene un id_trabajador, y el id_trabajador es el que se
almacena en la tabla de documentos

bueno ese es el problema.... había pensado en hacer algo como esto...
donde obr_pai_id = 1 representa a los nacionales

//############################################//
CREATE FUNCTION c_pai () RETURNS OPAQUE AS '
DECLARE
id int4;
BEGIN
id := select obr_id from ac_obrero where obr_per_id = NEW.per_id;

if NEW.per_pai_id = 1 then
delete from obr_doc_e where obr_id = id
end if;

if New.perPai_id <> 1 then
delete from obr_doc_n where obr_id = id
end if;

RETURN NULL;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER spai AFTER UPDATE ON gr_persona
FOR EACH ROW EXECUTE PROCEDURE c_pai ();

//##################################//

Pero todo esto no funciona

les agradezco mucho su ayuda... sugerencias y golpes ;-)

y aprovechando podrían recomendarme algún sitio donde haya ejemplos
de funciones y trigger... preferentemente en esp.. gracias

--
Vladito
Estamos aqui no por que seamos libres.
ESTAMOS AQUI POR QUE QUEREMOS UN MUNDO LIBRE

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-05-03 18:07:59 Re: ayuda con triggers y funciones....
Previous Message Agustin Casiva 2007-05-03 17:03:49 Re: Muchos usuarios conectados