Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/02/2007, 17:45
cacr
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: función+disparador que calcule un porcentaje a partir de dos campos

Asumiendo la responsabilidad, sigo colocando mis comentarios...

Guiandome de algunos apuntes, como este:
http://es.tldp.org/Postgresql-es/web...mer/x1503.html

he probado algunas cosas... a la tabla he agregado un campo fecha, y la función y el disparador han quedado así:

Código:
CREATE OR REPLACE FUNCTION fporcentaje() RETURNS "trigger"
 AS '
DECLARE 
	porcentaje double precision;	
BEGIN
	porcentaje := NEW.total;
	NEW.porcentaje := porcentaje;
	NEW.registro := ''now()'';
	RETURN NEW;
END
'
LANGUAGE plpgsql;

CREATE TRIGGER calporc
  AFTER INSERT OR UPDATE ON poblacion
  FOR EACH ROW 
  EXECUTE PROCEDURE fporcentaje();
caso 1:
sí quito de la función la línea: NEW.registro := ''now'';, al insertar un registro nuevo:

insert into poblacion (total, celulares) values (100,23)

sólo inserta los datos explícitos, más no hace nada sobre el campo porcentaje de la tabla, que es el que se define en la función.

caso 2:
dejando la línea, arroja el siguiente erro:

Error de SQL:

ERROR: syntax error en o cerca de "now" at character 11
CONTEXT: PL/pgSQL function "fporcentaje" line 6 at assignment

En la declaración:
insert into poblacion (total, celulares) values (100,23)

donde la línea 6, obviamente, hace referencia a la línea en cuestión.

Ciertamente, en el ejemplo, aparece now sin los parentesis, y el llamado a la función, se hace con los parentesis... vale decir, que he probado ambas, y arroja mismo error....

Sospecho, pero no sé cómo probarlo, que o el disparador no le está llegando a la función, o en la función no está devolviendo el valor asignado... demás está decir, que el campo donde debería guardarse el valor calculado en la función queda como NULL
__________________
Gracias de todas todas
-----
Linux!