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