From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Felipe de Jesús Molina Bravo <felipe(dot)molina(at)inegi(dot)gob(dot)mx> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: funcionamiento diferente en triggers |
Date: | 2007-01-31 14:32:53 |
Message-ID: | 20070131143253.GE22158@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Felipe de Jesús Molina Bravo escribió:
> Una disculpa por el error. Va un copy/paste de los scripts. Al terminar
> de ejecutar el script de abajo, ya tendran datos en la tabla de producto
> y lugar. Si hacen un "update producto set us = '2' where idp=1"
> provocará que se borren los registros de lugar y por lo tanto el
> contador de producto se ponga en 0 .... y claro que el atributo "us" de
> producto en '2'.....
Creo que el problema es que la tupla que debe actualizarse en el UPDATE
ya no existe cuando el trigger termina, puesto que le hiciste los varios
UPDATES en el otro trigger. La solución a esto sería, como ya
descubriste, poner esos DELETEs a "lugar" en un trigger AFTER, porque
así el UPDATE en producto se haría antes que esos otros DELETEs invoquen
al trigger que hace el UPDATE.
Es posible que esto esté documentado, pero en este momento no tengo el
tiempo de investigar el tema.
BTW en esa funcion donde te dije que pusieras RETURN NEW en lugar de
RETURN NULL, tienes razon que no tiene nada que ver con tu problema,
pero es confuso; yo en su lugar pondria un RAISE EXCEPTION para que sea
muy evidente lo que deseas que suceda.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Guido Barosio | 2007-01-31 14:49:29 | Re: No puedo descargar Postresql 8.2.1 desde ningún mirror |
Previous Message | Paulina Quezada | 2007-01-31 14:26:45 | No puedo descargar Postresql 8.2.1 desde ningún mirror |