From: | Rafael Martinez <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no> |
---|---|
To: | Miguel Torres <mtorres066(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: error en ejecucion de trigger |
Date: | 2011-04-18 21:40:12 |
Message-ID: | 1303162812.32519.7.camel@core2 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Mon, 2011-04-18 at 15:19 -0600, Miguel Torres wrote:
[.......]
>
> Este es el trigger:
> CREATE TRIGGER grabar_usuario AFTER INSERT OR DELETE OR UPDATE ON
> usuario FOR EACH STATEMENT EXECUTE PROCEDURE procesa_usuario_audit();
[.......]
> Este es el mensaje de error:
> Ejecuto un update o insert en la tabla usuario:
>
> soporte=# update usuario set depto = 'Administracion' where id_usuario
> = 514;
> ERROR: el registro «new» no ha sido asignado aún
> DETALLE: La estructura de fila de un registro aún no asignado no
> está determinado.
> CONTEXTO: función PL/pgSQL «procesa_usuario_audit» en la lÃnea 10
> en sentencia SQL
> soporte=#
>
Hola
Tu problema probablemente es que has definido un disparador que se
ejecuta una sola vez per comando SQL y en tu funcion estas intentando
retornar NEW y OLD despues de actualizar la tabla 'usuario_audit'
Los procedimientos almacenados utilizados por disparadores que se
ejecutan una sola vez per comando SQL (statement-level) tienen que
devolver siempre NULL.
Mas información en:
http://www.postgresql.org.es/node/301
--
Rafael Martinez Guerrero
Center for Information Technology
University of Oslo, Norway
PGP Public Key: http://folk.uio.no/rafael/
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2011-04-18 22:16:37 | Re: Ayuda migrar de 8.1 a 9.0 |
Previous Message | Alvaro Herrera | 2011-04-18 21:38:39 | Re: error en ejecucion de trigger |