Ayuda, problema con trigger

From: SILVANA IOVINO <silvana_iovino(at)yahoo(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Ayuda, problema con trigger
Date: 2009-01-22 12:26:08
Message-ID: 119596.33560.qm@web32506.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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
http://ar.mujer.yahoo.com/cocina/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cesar Erices 2009-01-22 12:30:13 Re: Implementacion de Cluster con Postgres
Previous Message Emanuel Calvo Franco 2009-01-22 12:23:18 Re: consulta durante ejecucion de proceso