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

Como hacer una funcion que actualice un atributo de una tabla, sin crear un trigger ?

Estas en el tema de Como hacer una funcion que actualice un atributo de una tabla, sin crear un trigger ? en el foro de PostgreSQL en Foros del Web. Hola, perdonen las molestias pero no sé como resolver este problema. Tengo una tabla llamada unidades_venta donde su esquema es: REATE TEMP TABLE unidad_venta ( ...
  #1 (permalink)  
Antiguo 22/11/2010, 13:08
 
Fecha de Ingreso: noviembre-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Como hacer una funcion que actualice un atributo de una tabla, sin crear un trigger ?

Hola, perdonen las molestias pero no sé como resolver este problema.

Tengo una tabla llamada unidades_venta donde su esquema es:

REATE TEMP TABLE unidad_venta (
Codigo_Producto char(10),
Num_Serie int8,
Fecha_Adquisicion date NOT NULL DEFAULT current_date,
Precio_Salida numeric(8,2) DEFAULT 0 NOT NULL CHECK (Precio_Salida > 0),
Precio_Actual numeric(8,2) DEFAULT 0 NOT NULL CHECK (Precio_Actual >= 0),
CONSTRAINT FK_comp2 PRIMARY KEY (Codigo_Producto, Num_Serie)
);

Lo que quiero realizar es un procedimiento que actualice el precio_actual de venta (ya esablecido) de las unidades en función de la fecha de su adquisición . Si ésta es mayor que 395 días, o sea, un año y un mes: este precio irá bajando un 5% cada mes. Para centralizar el proceso de actualización será el usuario quien invocará este proceso el primer día de cada mes y modificara el precio actual de las unidades cada vez a un 5% menos.

Mi problema está en que no se como hacer en el RETURN para que me devuelva la función en el atributo 'precio_actual' de mi tabla unidades_venta. Aquí les dejo lo que he intentado hacer sin éxito. Quiero que no llame a un TRIGGER, sino que se ejecute el procedimiento cada vez que yo invoque la función, pero no cuando haga un INSERT OR UPDATE. La cuestión sería cambiar lo que he hecho de modo que haga lo que pido sin llamar a un RETURNS TRIGGER.

CREATE OR REPLACE FUNCTION precioventa() RETURNS TRIGGER AS'
DECLARE
productos unidad_venta%ROWTYPE;
BEGIN
SELECT * INTO productos from unidad_venta where fecha_adquisicion + 395 < current_date;
IF FOUND THEN
UPDATE unidad_venta SET precio_actual = precio_actual - ((precio_actual*5)/100);
RETURN NEW;
ELSE
UPDATE unidad_venta SET precio_actual = precio_actual;
RETURN NEW;
END IF;
END;
'LANGUAGE 'plpgsql';

Espero que me puedan ayudar. Gracias
  #2 (permalink)  
Antiguo 22/11/2010, 21:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Como hacer una funcion que actualice un atributo de una tabla, sin crear u

si no quieres utilizar triggers porque los usas?

no retornes un trigger,,,, retorna un void o un boolean para determinar la ejecución de as sentencias al interior.

no comprendo bien cual es tu problema
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: actualice, funcion, trigger, tablas, atributos
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 17:16.