Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problema Funcion Trigger

Estas en el tema de Problema Funcion Trigger en el foro de PostgreSQL en Foros del Web. Hola a todos. Estoy creando una función que se va a utilizar como trigger. El asuntoe s que la estoy creando por que la necesito ...
  #1 (permalink)  
Antiguo 09/04/2010, 10:35
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Problema Funcion Trigger

Hola a todos.

Estoy creando una función que se va a utilizar como trigger. El asuntoe s que la estoy creando por que la necesito en varias tablas y asi no tener que crear varias funciones sino que se ejecute lo mismo usando una sola funcion.

El problema es que no logro concatenar el nombre de una tabla que necesito en un INSERT... adjunto el codigo para explicarme mejor.

CREATE OR REPLACE FUNCTION particion.insertarTablaHijo() RETURNS trigger AS $$
DECLARE
consulta text;
mes varchar(2);
tabla varchar;
BEGIN
-- si la tabla se llama diario agrego el mes
IF TG_TABLE_NAME = 'diario' THEN
mes := '_' || NEW.mes;
ELSE
mes := '';
END IF;
--armo el nombre de la tabla
tabla := TG_TABLE_NAME || '_' || NEW.anio || mes;
--Y AQUI ESTA EL BENDITO PROBLEMA
EXECUTE 'INSERT INTO ' || tabla || VALUES(NEW.*);
RETURN NULL;
END
$$ LANGUAGE plpgsql;

En la linea donde dice EXECUTE 'INSERT INTO ' || tabla || VALUES(NEW.*);... no se como carajos concatenar esa variable 'tabla' para que me la tome en la consulta.

Si tienen alguna die de como hacerlo, les agradezco mucho. La estructura de las tablas como tal no importa, lo importante es poder armar el query.

Gracias.
  #2 (permalink)  
Antiguo 09/04/2010, 12:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema Funcion Trigger

prueba así:

EXECUTE 'INSERT INTO ' || tabla || 'VALUES(NEW.*)';

La concatenación la debes hacer entre comillas simples para sintaxis de SQL estandar, cuando entran variables, debes cerrar, concatenar como lo estas haciendo y posteriormente abrir el resto de la sentencia.

espero te sirva
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/04/2010, 12:52
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Problema Funcion Trigger

Gracias huesos por tu aporte, pero ya lo intente y me dice el siguiente error:

Query failed: ERROR: NEW used in query that is not in a rule

¿Qué podria hacer ahora?

Etiquetas: funcion, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:08.