Ciao tutti! vi chiedo un immenso aiuto. devo fare un trigger per gestire il seguente aspetto:

SE SI TENTA DI MODIFICARE IL NUMERO DI CAMERE DISPONIBILI DI UN HOTEL CON UN NUMERO
SUPERIORE ALLA DISPONIBILITA' EFFETTIVA, LA PROCEDURA SI ARRESTA CON UN'ECCEZZIONE.

Ad esempio se faccio:
codice:
UPDATE hotel SET disponibilita=disponibilita-500 WHERE nome='Cristallo'
e la disponibilità è minore di 500 mi dovrebbe dare una eccezzione.

Tabella HOTEL:

codice:
CREATE TABLE HOTEL
(CODICE NUMERIC (7) NOT NULL,
 NOME VARCHAR (50),
 CAMERE NUMERIC (5),
 DISPONIBILITA NUMERIC (5),
 PREZZO NUMERIC (10),
 CATEGORIA NUMERIC (2) NOT NULL,
 PRIMARY KEY (CODICE),
 FOREIGN KEY (CODICE) REFERENCES STRUTTURE_TURISTICHE
 ON DELETE CASCADE ON UPDATE CASCADE
);
Ho provato in questo modo, ma ovviamente non funziona:

codice:

CREATE FUNCTION disponibilita() RETURNS trigger AS $disponibilita$ 
  BEGIN
    IF NEW.disponibilita<0 THEN
      RAISE EXCEPTION 'Disponibilità insufficente';
      RETURN NULL;
    ELSE UPDATE hotel SET disponibilita=NEW.disponibilita WHERE codice = NEW.codice;
      RETURN NEW;
    END IF;
   END; 
$disponibilita$ LANGUAGE plpgsql;

CREATE TRIGGER GESTIONE_HOTEL BEFORE UPDATE ON HOTEL FOR EACH ROW EXECUTE PROCEDURE disponibilita ();

....scusate ma non sono molto pratico di trigger è solo che mi serve per un progetto all'uni!
Vi ringrazio anticipatamente