phantom85
17-07-2008, 15:54
Ciao a tutti, devo realizzare qualche trigger su un database...premetto che è la prima volta che mi cimento in un progetto del genere.
Non ho ben chiara la sintassi dei trigger perchè sul mio libro c'è solo quella per Oracle spiegata a spanne :rolleyes:
Sto realizzando un progetto di un cinema: ho una tabella SALA_CINEMA, SPETTACOLO, PROIETTA e PRENOTAZIONE.
Nella tabella PROIETTA ho una chiave primaria che è composta dalle 2 chiave primarie di SALA_CINEMA e SPETTACOLO, inoltre ho un attributo POSTI_LIBERI.
Devo fare un trigger che quando avviene una prenotazione per un determinato spettacolo in una determinata sala, questo trigger deve aggiornare il numero di posti liberi...mi aiutate?? Non conosco bene la sintassi quindi reperendo qua e là alcune info ho scritto questo:
DELIMITER $$
CREATE TRIGGER aggiorna_occupazione AFTER INSERT ON PRENOTAZIONE
FOR EACH ROW
BEGIN
declare POSTI INT;
SELECT POSTI_LIBERI into POSTI FROM PROIETTA WHERE (ID_SPETTACOLO = NEW.DI_SPETTACOLO) AND (ID_SALA = NEW.ID_SALA);
if POSTI > 0 THEN
UPDATE PROIETTA SET POSTI_LIBERI = POSTI_LIBERI - 1 WHERE (PROIETTA.ID_SPETTACOLO = NEW.ID_SPETTACOLO) AND (PROIETTA.ID_SALA = NEW.ID_SALA);
end if;
END $$;
DELIMITER ;
Il problema che mi dà una serie di errori penso dovuti proprio alla sintassi...inoltre i DELIMITER sono proprio necessari??:mbe:
Grazie!
Ciao!!
Non ho ben chiara la sintassi dei trigger perchè sul mio libro c'è solo quella per Oracle spiegata a spanne :rolleyes:
Sto realizzando un progetto di un cinema: ho una tabella SALA_CINEMA, SPETTACOLO, PROIETTA e PRENOTAZIONE.
Nella tabella PROIETTA ho una chiave primaria che è composta dalle 2 chiave primarie di SALA_CINEMA e SPETTACOLO, inoltre ho un attributo POSTI_LIBERI.
Devo fare un trigger che quando avviene una prenotazione per un determinato spettacolo in una determinata sala, questo trigger deve aggiornare il numero di posti liberi...mi aiutate?? Non conosco bene la sintassi quindi reperendo qua e là alcune info ho scritto questo:
DELIMITER $$
CREATE TRIGGER aggiorna_occupazione AFTER INSERT ON PRENOTAZIONE
FOR EACH ROW
BEGIN
declare POSTI INT;
SELECT POSTI_LIBERI into POSTI FROM PROIETTA WHERE (ID_SPETTACOLO = NEW.DI_SPETTACOLO) AND (ID_SALA = NEW.ID_SALA);
if POSTI > 0 THEN
UPDATE PROIETTA SET POSTI_LIBERI = POSTI_LIBERI - 1 WHERE (PROIETTA.ID_SPETTACOLO = NEW.ID_SPETTACOLO) AND (PROIETTA.ID_SALA = NEW.ID_SALA);
end if;
END $$;
DELIMITER ;
Il problema che mi dà una serie di errori penso dovuti proprio alla sintassi...inoltre i DELIMITER sono proprio necessari??:mbe:
Grazie!
Ciao!!