Re: Crear Trigger

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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