[Pgsql-ayuda] problema con trigger

From: "Eduardo Gauna" <egauna(at)infovia(dot)com(dot)ar>
To: <pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: [Pgsql-ayuda] problema con trigger
Date: 2003-03-03 19:17:30
Message-ID: 000701c2e1b9$a2f108e0$5969a8c0@juan
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Tengo un problema con un trigger en postgres, espero puedan ayudarme.

Tengo tres tablas de la siguiente manera
tabla1
+---+------+------+------+------+------+
|ID |Dato1 |Dato2 |Dato3 |Dato4 |Dato5 |
+---+------+------+------+------+------+
|1 | 300 | 400 | 200 | 150 | 220 |
|/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\|

tabla2
+---+------+
|ID |Acum |
+---+------+
|1 | 100 |
|/\/\/\/\/\|

tabla3
+------------+
|camp_a_acum |
+------------+
| Dato1 |
| Dato4 |
|/\/\/\/\/\/\|

Necesito acumular los campos de la tabla1 que me indica la tabla3 en la
tabla2.
Para que se entienda el trigger para cada registro insertado en la tabla1
diria algo asi:

...
FOR registro in select * from tabla3 LOOP
vsql=''update tabla2 set acum=acum+ new. '' || registro.camp_a_acum ||
'' where tabla2.id=new.id '';
execute vsql;
END LOOP
...

Según los datos del ejemplo, el campo Acum de la tabla2 debería quedar
finalmente
con un valor de 550 (100+300(Tabla1.Dato1)+150(Tabla1.Dato4))

El problema es que en el momento de hacer el execute el motor no tiene idea
de
que es NEW por consiguiente no funciona. Lo que tendria que hacer es
"evaluar"
el contenido de " '' new. '' || registro.camp_a_acum " de alguna forma pero
no se como.

Alguna sugerencia???

FEDE!!

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Manuel Sugawara 2003-03-03 20:21:13 Re: [Pgsql-ayuda] Ayuda a un novato
Previous Message Rafa Rodriguez Hernandez 2003-03-03 18:58:26 [Pgsql-ayuda] Permisos para un user.