Re: Ayuda con un Trigger

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.

--
http://espartano.linuxreal.org/blog/html/index.php

In response to

Browse pgsql-es-ayuda by date

  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