Re: un trigger sencillo que no hay manera con el

From: "Diego A(dot) Gil" <diego(at)adminsa(dot)com>
To: dr7tbien(at)terra(dot)es
Cc: PostgreSQL Spanish <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: un trigger sencillo que no hay manera con el
Date: 2004-11-03 12:21:30
Message-ID: 1099484490.3301.3.camel@roadwarrior.adminsa.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El problema es que TG_RELNAME es del tipo "name" y lo estas comparando
con un campo de tipo "character varying". El error que da es que no
encuentra como comparar estos dos tipos diferentes.

Prueba definir al campo tabla como name o hacer un cast.

Diego.

El mié, 03-11-2004 a las 09:25, emilio alvarez escribió:
> tengo varias tablas, y cada vez que elimino un elemento de alguna de
> estas tablas quiero que en una tabla de referencias a todas las demas se
> elmine la referencia al articulo eliminado. La tabla ocurrencias_clave
> es una especie de buscador, tiene varios campos, pero los mas
> importantees son tabla y id_referencia_tabla . Si por jemplo quiero
> borrar la referencia en ocurrencias_clave al articulo cuya id es 14,
> ejecutare la sentencia:
>
> DELETE FROM ocurrencias_clave WHERE tabla='articulos' AND
> id_referencia_tabla=14;
>
> para ello he creado un trigger para una de las tablas, la tabla articulos:
>
> CREATE TRIGGER trigger_borrado_ocurrencias_clave BEFORE DELETE ON articulos
> FOR EACH ROW
> EXECUTE PROCEDURE eliminar_ocurrencia();
>
> y una funcion:
>
> CREATE OR REPLACE FUNCTION eliminar_ocurrencia() RETURNS TRIGGER AS '
> BEGIN
> DELETE FROM ocurrencias_clave WHERE tabla=TG_RELNAME AND id=OLD.id;
> RETURN NEW;
> END;
> ' LANGUAGE 'plpgsql';
>
> Potr lo que veeo en el manual, TG_RELNAME guarda el nombre de la tabla
> del trigger, en este caso 'articulos' y OLD.id guardaria la id del
> articulo que se borrará, en este caso el 14. Sin embargo no funciona
> esto. Me da el siguioente error:
>
> WARNING: Error occurred while executing PL/pgSQL function
> eliminar_ocurrencia
> WARNING: line 2 at SQL statement
> ERROR: Unable to identify an operator '=' for types 'character varying'
> and 'name'
> You will have to retype this query using an explicit cast
>
> gracias anticipadas
>
> dr7tbien
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message emilio alvarez 2004-11-03 12:25:24 un trigger sencillo que no hay manera con el
Previous Message Betsa 2004-11-03 12:04:22 Postgresql