From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Dan <danstreet(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Crear Trigger |
Date: | 2006-09-14 15:33:42 |
Message-ID: | 20060914153342.GF525@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Dan escribió:
> buenos dias, he creado una funcion actualiza_ruc() que se disparara atraves
> de un trigger actualiza_ruc, para actualizar un campo dentro de una misma
> tabla "cliente", pero al parecer algo no esta bien, no me devuelve nada y
> programa.
> (hago eso, porque tengo un programa en VB6 y las funciones de ingreso
> estan unas DLL, y no tengo acceso a esa fuente, asi que se me ocurrio crear
> este campo que se actualice), la version usada es PostgreSQL 7.2.2,
> agradecere sus comentarios :D
Primero que nada, actualiza a una version mas nueva.
Segundo, esto se hace asi:
> CREATE OR REPLACE FUNCTION actualiza_ruc()
> RETURNS OPAQUE AS
> '
> BEGIN
> IF TG_OP = ''INSERT'' OR TG_OP =''UPDATE'' THEN
> UPDATE cliente
> SET ruccliente = NEW.dniruccliente
> WHERE dniruccliente = NEW.dniruccliente;
> END IF;
> RETURN NULL;
> END;
> ' LANGUAGE plpgsql;
>
> CREATE TRIGGER actualiza_ruc AFTER INSERT OR UPDATE ON cliente
> FOR EACH ROW EXECUTE PROCEDURE ruccliente();
create or replace function actualiza_ruc() returns trigger as '
begin
if tg_op = ''insert'' or tg_op = ''update'' then
NEW.ruccliente = NEW.dniruccliente;
end if;
return NEW;
end;
' language plpgsql;
CREATE TRIGGER actualiza_ruc BEFORE INSERT OR UPDATE ON cliente
FOR EACH ROW EXECUTE PROCEDURE ruccliente();
Nota BEFORE en lugar de AFTER.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Dan | 2006-09-14 15:37:04 | Re: Crear Trigger |
Previous Message | Victor Lopez | 2006-09-14 15:28:50 | Re: ampliar fisicamente |