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