[Pgsql-ayuda] problema con trigger

Eduardo Gauna Eduardo Gauna" <egauna@infovia.com.ar
Mon, 3 Mar 2003 19:17:30 -0000


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!!