Archivio

Posts Tagged ‘database’

MySQL 5, utilizzo dei TRIGGER

11 July 2008 maxgrante Nessun commento

Finalmente trovo il tempo di pubblicare un articolo… :-)

Vediamo di seguito l’utilizzo dei TRIGGER in mysql 5, se non dico male infatti sino alla versione 5.0.x i TRIGGER su mysql non erano disponibili.

Prima di tutto, a cosa servono i TRIGGER? I TRIGGER hanno il principale scopo di automatizzare determinate operazioni sul database all’occorrenza di determinati eventi come INSERT, UPDATE o DELETE.

Il modo con cui creare un TRIGGER è piuttosto semplice:

CREATE TRIGGER setnoprice BEFORE UPDATE ON prodotto
FOR EACH ROW
BEGIN
IF NEW.online = ‘no’ THEN
SET NEW.prezzo = 0;
END IF;
END

Analizziamo cosa fa di fatto questo TRIGGER, al di là della sintassi:

Ipotizziamo di avere ad esempio un sito di e-commerce dal quale i prodotti sono acquistabili esclusivamente quando il loro prezzo è maggiore di zero, mentre sono online altri prodotti per il quale esiste una presentazione ma l’acquisto può essere fatto contattando l’ufficio commerciale e non viene esposto il prezzo.

Conseguentemente quando un prodotto va offline è automatico che non sia più vendibile. La soluzione più classica e semplice (apparentemente) è quella di gestire l’operazione direttamente da backoffice dell’applicativo in modo automatico o peggio ancora di delegare al gestore del backoffice il fatto di resettare a zero il prezzo quando un prodotto va offline.

[Piccolo inciso, so benissimo che potrebbe essere bloccato l'acquisto oltre che per prezzo a zero anche nel caso il flag online sia off, così come so che il prodotto non sarebbe nemmeno visualizzato, ma un'esempio lo dovevo fare... :-D ]

Entrando nel dettaglio mysql applicando questo TRIGGER si preoccupa di eseguire PRIMA [BEFORE] dell’azione UPDATE [solo update quindi] la verifica se online diventerà uguale a off e in tal caso forza il nuovo valore di prezzo a zero.

In sostanza il TRIGGER va a sostituire quelle operazioni automatiche che normalmente vengono delegate all’applicativo.

Per maggiori informazioni potete consultare direttamente il manuale di mysql alla pagina relativa ai TRIGGER.