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
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 |