Re: trigger bloquea tabla?

From: Rodrigo Ruiz Fuentes <rruizf(at)gmail(dot)com>
To: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: trigger bloquea tabla?
Date: 2009-10-13 18:29:12
Message-ID: 4AD4C6F8.4020502@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jaime Casanova escribió:
> 2009/10/9 Rodrigo Ruiz Fuentes <rruizf(at)gmail(dot)com>:
>> Con esto, entonces he creado un trigger que se ejecuta después del ingreso
>> de la nueva línea, y como mencioné en el párrafo anterior, debo crear nuevas
>> líneas para indicar que el monto se trae de varios asientos y luego
>> actualizar la línea creada con otros datos.
>
> Es decir que tienes un trigger ON INSERT en la tabla que insertara
> nuevos registros en la misma tabla lo que disparara el trigger
> nuevamente...
>
> fijate si es un trigger BEFORE INSERT si es asi chequea si en algun
> momento estas retornando NULL, eso cancelaria la operacion
> (probablemente unos de los INSERTS ejecutados por el mismo trigger)
>
> sino, muestra la funcion del trigger y la definicion del CREATE TRIGGER
>

Estimados, agradezco su ayuda.
Efectivamente existen 2 triggers sobre la tabla, uno BEFORE INSERT y
otro AFTER INSERT, sin embargo no contaba con la existencia de un tercer
trigger que no había sido eliminado y que ya no debia estar ahí, pero
estaba y me estaba retornando NULL sin mensaje de error, hoy lo descubrí
al estar ya mas despejado después del fin de semana largo :)

Pasando a otro punto, es cierto que el trigger AFTER INSERT, en
determinados casos, debe ingresar nuevas tuplas a la misma tabla
afectada, pudiendo disparar nuevamente el trigger y si se dan ciertas
condiciones, se generarian infinitas tuplas generadas por el trigger.
Busqué información en inet y en la lista, acerca de como poder
deshabilitar el trigger, e ingresar directamente los datos a la tabla,
intenté utilizando DISABLE TRIGGER pero me arrojó error indicando que no
se podía deshabilitar el trigger mientras esté siendo utilizado,
entonces para salir rápido del paso cree un campo sobre la tabla de tipo
boolean que por defecto es true, y cuando quiero que no se ejecute el
trigger le envío false, entonces al principio del trigger verifico este
campo primero y ejecuto el trigger si es true.
Mi pregunta, se podrá hacer esto de otra forma que la mencionada?

Saludos.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-10-13 19:52:41 Re: Ordenar resultados complicados [Solucionado]
Previous Message Jaime Casanova 2009-10-13 18:10:36 Re: trigger bloquea tabla?