Wednesday, September 17, 2008

Re: [pgsql-es-ayuda] Evitar que se ejecute un trigger on update

On 9/17/08, el-PRiNCiPiTo <el-PRiNCiPiTo@terra.es> wrote:
> Hola.
> Tengo un trigger creado que se ejecuta al hacer un update en la tabla. El
> caso es que ahora se da una situación en la que la tabla puede recibir
> actualizaciones y dicho trigger no es necesario que se ejecute (si se
> ejecuta altera el update que pretendemos hacer resultando inútil). Así que
> para no tener que modificar el trigger que es bastante complejo se me ha
> ocurrido que a lo mejor hay alguna forma para hacer el update avisándole que
> quiero que ignore los posibles triggers que haya, ¿eso sería posible?
> Si no existe nada así se me ha ocurrido añadir a la tabla un campo más y
> meter todo el trigger en un if que evalúe ese campo algo así:
>

personalmente me parece una falla en el diseño. la idea de un trigger
es dejar que el servidor se encargue de ciertas tareas que deben
realizarse siempre que se inserte/actualize/borre un registro de ese
modo no dependes de que los programadores *recuerden* que eso se debe
hacer... pero como lo tienes ahora, nuevamente dependes del
programador (que se acuerde de "apagar" el trigger).

Para mi lo mas coherente es tener un if dentro del trigger que se
encargue de determinar si se deben hacer cambios o no.

si realmente quieres apagar el trigger a partir del 8.1 tienes
ALTER TABLE tablita DISABLE TRIGGER [nombre_trigger | USER]

pero creo que eso afecta a todas las sesiones no estoy seguro...

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda

No comments: