Excelente Ayuda. Cambie en el trigger: FOR EACH STATEMENT EXECUTE
Por: FOR EACH ROW EXECUTE Realice pruebas con resultado = OK. Gracias y saludos.. El 18 de abril de 2011 15:40, Rafael Martinez <[email protected]>escribió: > 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/ > > -- Miguel Angel Torres Culiacan, Sin.
