AYUDA trigger no salgo del problema

From: "P(at)blo Villad(at)" <andresv50(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: AYUDA trigger no salgo del problema
Date: 2005-07-28 15:28:03
Message-ID: BAY23-F22E06B5B4D06ACE848053AB3CF0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos de nuevo
Soy nuevo en este cuento de los Triggers

Muchas Gracias por la respuesta
La verdad no dan solucion a mis problemas

Lo q pasa es que tengo dos tablas

CREATE TABLE cargo_dependencia (
codigo character varying(2) NOT NULL,
dependencia character varying(30),
cargo character varying(30),
nplazas smallint
);

CREATE TABLE contrato (
numero character varying(2) NOT NULL,
nombre character varying(30),
cargo character varying(2) NOT NULL
);

SELECT * from cargo_dependencia ;

codigo | dependencia | cargo | nplazas
--------+-------------+------------+---------
02 | Mercadeo | Secretaria | 3
03 | Derecho | Docente | 4
04 | Medicina | Docente | 5
01 | Ingenieria | Decano | 2
04 | Medicina | Docente | 5
01 | Ingenieria | Decano | 2

Select * from contrato;

numero | nombre | cargo
--------+---------+-------
01 | Sandra | 01
01 | Lorena | 03
01 | Johana | 02
01 | Diana | 04
02 | Marcela | 03
03 | Andres | 03

ahora necesito que cuando se inserte un nuevo contrato
en la tabla contratos

INSERT INTO contrato VALUES ('04','Patricia','03');

este contrato pertenece a una dependencia que es la 03
que corresponde a

codigo | dependencia | cargo | nplazas
-----------------------------------------------------------
03 | Derecho | Docente | 4

se disminuya en 1 el numero de plazas

tengo el siguiente trigger

DROP FUNCTION plazas() cascade;

CREATE OR REPLACE FUNCTION plazas() RETURNS TRIGGER AS $contrato_plazas$

BEGIN
IF (TG_OP = 'INSERT') THEN

UPDATE cargo_dependencia SET nplazas=nplazas-1 where
Cargo=NEW.Cargo;

--UPDATE contrato SET descuento=descuento-1 where
--nombre_cafe=NEW.nombre_cafe;

RETURN NEW;
END IF;
RETURN OLD;
END;

$contrato_plazas$ LANGUAGE plpgsql;

CREATE TRIGGER descuento_plazas
AFTER INSERT ON contrato
FOR EACH ROW EXECUTE PROCEDURE plazas();

y no me funciona
QUE PUEDO HACER
AYUDA - AYUDA
MUCHAS GRACIAS

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hugo Gamarra 2005-07-28 15:41:39 RE: AYUDA trigger no salgo del problema
Previous Message Marco Villagrán 2005-07-28 15:22:40 Re: Portando Procedimiento de Oracle a Postgresql