Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: DanDate: 2006-09-14 15:37:04
Subject: Re: Crear Trigger
Previous:From: Victor LopezDate: 2006-09-14 15:28:50
Subject: Re: ampliar fisicamente

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group