[pgsql-ayuda] triggers

Mario Oroz jmoroz@uol.com.ar
Wed, 22 Aug 2001 13:24:36 -0300


----- Original Message -----
From: "Ing. Roberto Andrade Fonseca" <randrade@abl.com.mx>
To: "Felipe Fernandez" <danielfm@teleline.es>
Cc: "pgsql" <pgsql-ayuda@tlali.iztacala.unam.mx>
Sent: Wednesday, August 22, 2001 12:22 AM
Subject: Re: [pgsql-ayuda] triggers


Hola:
On Sun, 19 Aug 2001, Felipe Fernandez wrote:

> Me he hecho un lio con los triggers  as=ED que recurro a la experiencia=
 de
> otros. Me explico con un ejemplo
>
> Tengo dos tablas
>
> create table clientes (
>     codigo varchar(10) nor null primary key,
>      nombre varchar(40)
> );
>
> create table facturas (
>     numero int4 not null primary key,
>     fecha date,
>     cliente varchar(10) references clientes,
>     ....
> );
>
> Si hago lo anterior me crea unos triggers sin nombre con unas funciones
> extra=F1as que he deducido tengo que crear. Lo que pretendo es que cuan=
do
> cambie el codigo del cliente en su tabla correspondiente se me cambie
> tambien en la tabla de facturas. Supongo que la funcione que se ejecuta
> en el triger es la siguiente:
>
> create function cambiocliente (varchar, varchar) returns bool as '
>      update facturas set cliente =3D $2 where cliente =3D$1;
>     select 1;
> ' language 'sql';
>
> Pues no logro que funcione. Evidentemente no estoy entendiendo algo per=
o
> por mas que consulto los manuales, traducidos o no, no me aclaran nada
> mas all=E1 de lo que estoy exponiendo.

> >NOOOOOO.

> >La llave primaria debe ser respetada como la ni=F1a de tus ojos!

* * *
Hola!!
Bueno ... lograron confundirme...:

No era que el trigger que crea al momento de "armar" las referencias son =
en
efecto los que me permitiran modificar (en el caso del cliente con sus fa=
cturas
y ya se *yo tampoco cambiaria una llave primaria ...pero....*) el id de c=
liente
de juan perez de 45 al 890 y que automaticamente el trigger me actualice =
ese id
referenciado en  cada factura?
A este punto me dirijo y quiero sacarme esa duda? por cualquier otra cosa=
 o mala
interpretacion por mi parte ...estoy abierto, i=B4m opennn, a que me corr=
ijan y
expliquen.

Mario O. - Argentina
Usuario de Linux no registrado! ;)