From: | Espartano <espartano(dot)mail(at)gmail(dot)com> |
---|---|
To: | Miguel <mvillagomez(at)sayab(dot)com(dot)mx> |
Cc: | Postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con un Trigger |
Date: | 2006-08-19 01:01:41 |
Message-ID: | d353bd50608181801nf8c9ffbxac641bcf0b68a16d@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On 8/18/06, Miguel <mvillagomez(at)sayab(dot)com(dot)mx> wrote:
>
>
>
>
> 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
>
> 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
>
>
Tal vez te sirva de algo un post pasado:
http://archives.postgresql.org/pgsql-es-ayuda/2005-12/msg00041.php
sigue el hilo principal hasta que llegen a la creacion de una regla
que se llama "noalassanguijuelas" creo.
From | Date | Subject | |
---|---|---|---|
Next Message | Felipe Fernandez | 2006-08-19 05:31:01 | Re: Conexiones externas a V 8.1 en windows |
Previous Message | Jaime Casanova | 2006-08-19 00:54:55 | Re: Conexiones externas a V 8.1 en windows |