Re: Ayuda, problema con trigger

From: Jose Luis Balle <joseluisballe(at)gmail(dot)com>
To: silvana_iovino(at)yahoo(dot)com(dot)ar
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda, problema con trigger
Date: 2009-01-22 13:24:16
Message-ID: 6d87542d0901220524g6c430e61kf035059bd7b6ac71@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Deberias cambiar FOR EACH STATAMENT por FOR EACH ROW?

El día 22 de enero de 2009 10:26, SILVANA IOVINO
<silvana_iovino(at)yahoo(dot)com(dot)ar> escribió:
> Hola a todos!! necesito si alguno me puede ayudar con un problema que tengo
> al momento de crear un trigger que usa una funcion, el script de creacion de
> la funcion y del trigger es el siguiente:
>
> CREATE OR REPLACE FUNCTION
> "public"."titulo_busqueda_dinamico_update_modelos" () RETURNS trigger AS
> $body$
> DECLARE
> contador_titulo integer;
> tituloBusqueda varchar;
> sNombre varchar;
> BEGIN
> select nombre into sNombre from modelos where modelos.id_modelo =
> new.id_modelo;
>
> tituloBusqueda:= replace(lower(sNombre), ' ', '-');
> tituloBusqueda:= replace(tituloBusqueda, '¡', '-');
> tituloBusqueda:= replace(tituloBusqueda, '!', '-');
> tituloBusqueda:= replace(tituloBusqueda, '¿', '-');
> tituloBusqueda:= replace(tituloBusqueda, '?', '-');
> tituloBusqueda:= replace(tituloBusqueda, '+', '-');
> tituloBusqueda:= replace(tituloBusqueda, '/', '_');
> tituloBusqueda:= replace(tituloBusqueda, E'\\', '_');
> tituloBusqueda:= replace(tituloBusqueda, 'ñ', 'n');
> tituloBusqueda:= replace(tituloBusqueda, 'ç', 'c');
>
> tituloBusqueda:= replace(tituloBusqueda, 'ù', 'u');
> tituloBusqueda:= replace(tituloBusqueda, 'à', 'a');
> tituloBusqueda:= replace(tituloBusqueda, 'è', 'e');
> tituloBusqueda:= replace(tituloBusqueda, 'ì', 'i');
> tituloBusqueda:= replace(tituloBusqueda, 'ò', 'o');
>
> tituloBusqueda:= replace(tituloBusqueda, 'ú', 'u');
> tituloBusqueda:= replace(tituloBusqueda, 'á', 'a');
> tituloBusqueda:= replace(tituloBusqueda, 'é', 'e');
> tituloBusqueda:= replace(tituloBusqueda, 'í', 'i');
> tituloBusqueda:= replace(tituloBusqueda, 'ó', 'o');
>
> tituloBusqueda:= replace(tituloBusqueda, 'ä', 'a');
> tituloBusqueda:= replace(tituloBusqueda, 'ë', 'e');
> tituloBusqueda:= replace(tituloBusqueda, 'ï', 'i');
> tituloBusqueda:= replace(tituloBusqueda, 'ö', 'o');
> tituloBusqueda:= replace(tituloBusqueda, 'ü', 'u');
>
> tituloBusqueda:= replace(tituloBusqueda, 'â', 'a');
> tituloBusqueda:= replace(tituloBusqueda, 'ê', 'e');
> tituloBusqueda:= replace(tituloBusqueda, 'î', 'i');
> tituloBusqueda:= replace(tituloBusqueda, 'ô', 'o');
> tituloBusqueda:= replace(tituloBusqueda, 'û', 'u');
>
>
> select count(*) INTO contador_titulo from modelos where
> modelos.titulo_busqueda = tituloBusqueda;
>
> IF contador_titulo > 0 THEN
> tituloBusqueda := tituloBusqueda || '-' || new.id_modelo;
> UPDATE modelos SET titulo_busqueda = tituloBusqueda WHERE
> modelos.id_modelo = new.id_modelo;
> ELSE
> UPDATE modelos SET titulo_busqueda = tituloBusqueda WHERE
> modelos.id_modelo = new.id_modelo;
> END IF;
>
> END;
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>
> CREATE TRIGGER "trigger prueba" AFTER UPDATE
> ON "public"."modelos" FOR EACH STATEMENT
> EXECUTE PROCEDURE "public"."titulo_busqueda_dinamico_update_modelos"();
>
> El error que me tira es cuando intento modificar una tupla de la tabla
> modelos, salta el trigger y me muestra el siguiente error:
>
> ERROR: record "new" is not assigned yet.
> DETAIL: the tuple structure of a not-yet-assigned record is indeterminate.
> CONTEXT: PL/pgSQL function "titulo_busqueda_dinamico_update_modelos" line 6
> at SQL statement.
> La linea 6 de la funcion a que se refiere el error es: select nombre into
> sNombre from modelos where modelos.id_modelo = new.id_modelo;
>
> Espero la ayuda de ustedes.
> Silvana
>
>
> ________________________________
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> Visitá http://ar.mujer.yahoo.com/cocina/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Emanuel Calvo Franco 2009-01-22 13:25:18 Re: Ayuda, problema con trigger
Previous Message Emanuel Calvo Franco 2009-01-22 13:19:20 Re: Implementacion de Cluster con Postgres