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
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 |