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/
signature.asc
Description: This is a digitally signed message part
