Hola estoy creando una pequeña base de datos para mi trabajo tengo una duda agredeceria mucho su ayuda
Tengo una tabla que tiene un campo llamado bloqueado (boolean) y quiesiera que el trigger corriera solo si el campo esta marcado como TRUE? es para evitar edicion de datos
CREATE OR REPLACE FUNCTION "Quimico Farmaceutico"."Proteger Datos"() RETURNS trigger AS
$BODY$DECLARE
bloqueado BOOLEAN;
BEGIN
IF (bloqueado=TRUE) THEN
RETURN NULL;
END IF;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
Muchas gracias
Re: Duda Trigger evitar edicion de datos
Mar, 25/05/2010 - 15:31 — rafaelmaTriggers condicionales solo existen a partir de la version 9.0 de PostgreSQL (que todavia esta en version beta). Un trigger condicional solo se activara si la condicion definida durante su creacion se cumple.
En las versiones actuales lo que puedes hacer es comprobar una determinada condicion una vez que el trigger se ha activado.
En tu caso la funcion que propones esta casi correcta. No necesitas definir una variable local 'bloqueado', usa NEW.bloqueado para operaciones INSERT y UPDATE y OLD.bloqueado para operaciones DELETE.
Tienes mas informacion sobre lo que necesitas en el articulo "Disparadores (triggers) en PostgreSQL" en la direccion http://www.postgresql-es.org/node/301
Suerte y ya contaras.
--
Rafael Martinez
PostgreSQL-es.org
Muchas Gracias
Mar, 25/05/2010 - 19:56 — AnónimoFue mas facil de lo que pense funciona como quiero:
CREATE OR REPLACE FUNCTION "Prueba"()
RETURNS trigger AS
$BODY$DECLARE
BEGIN
IF (OLD.bloqueado=TRUE) THEN
RETURN NULL;
ELSE RETURN NEW;
END IF;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION "Prueba"() OWNER TO postgres;
Enviar nuevo comentario