Re: Ayuda con un Trigger

From: "Milton Galo Patricio" <minoztro(at)gmail(dot)com>
To: Miguel <mvillagomez(at)sayab(dot)com(dot)mx>, Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con un Trigger
Date: 2006-08-18 23:03:54
Message-ID: 172699c50608181603m2e0d64cdna84c5b797cdef2b2@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 18/08/06, Miguel <mvillagomez(at)sayab(dot)com(dot)mx> escribió:
>
> Qué tal tengo estas tablas.
>
>
>
> CREATE TABLE empleado(id_empleado SERIAL NOT NULL UNIQUE, paterno varchar
> NOT NULL, materno varchar, nombre varchar NOT NULL, ingreso date NOT NULL,
> puesto varchar, sueldo_mensual float NOT NULL, activo boolean NOT NULL,
> PRIMARY KEY(nombre, paterno, materno));
>
>
>
> CREATE TABLE gastos_empleado(id_gasto SERIAL NOT NULL UNIQUE, no_poliza
> integer NOT NULL UNIQUE, id_empleado integer NOT NULL references
> empleado(id_empleado), fecha date NOT NULL, monto float NOT NULL,
> id_proyecto integer NOT NULL references proyecto(id_proyecto), PRIMARY
> KEY(no_poliza));
>
>
>
> Y quiero crear un trigger que no me permita ingresar a un empleado que no
> este activo en ese momento a la tabla gastos empleado, pero no se como
> decirle a Postgres eso, este es mi trigger:
>
>
>
> CREATE OR REPLACE FUNCTION empleado_activo() RETURNS TRIGGER AS $$
>
> BEGIN
>

IF (NEW.id_empleado NOT IN (SELECT id_empleado FROM empleado WHERE
> activo='TRUE') THEN
>

aca te falta el cierre de parentesis, está en marcado en rojo

IF (NEW.id_empleado NOT IN (SELECT id_empleado FROM empleado WHERE
activo='TRUE')) THEN

> RAISE EXCEPTION 'No se puede meter un gasto para este empleado. Este no se
> encuentra activo.';
>
> END IF;
>
> RETURN NULL;
>
> END;
>
> $$ LANGUAGE plpgsql;
>
>
>
> CREATE TRIGGER empleado_activo BEFORE INSERT OR UPDATE ON gastos_empleado
> FOR EACH ROW EXECUTE PROCEDURE empleado_activo();
>
>
>
> Es la primera vez que hago un trigger así que comprendan que todavía no si
> se el IF sea correcto; ya que postgres me manda este error:
>
>
>
> ERROR: mismatched parentheses
>
> CONTEXT: compile of PL/pgSQL function "empleado_activo" near line 2
>
>
>

--
Milton Inostroza Aguilera

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-08-19 00:13:12 Re: Ayuda con un Trigger
Previous Message obed 2006-08-18 22:55:45 Re: Conexiones externas a V 8.1 en windows