16. Il linguaggio SQL Vers. 11.2 – Febbraio 2026
31) creiamo un TRIGGER sulla tabella Articolo che controlli la clausola ù
CHECK( Prezzo BETWEEN 1.00 AND 10.00)
impostata in precedenza nella CREATE TABLE di Articolo, che MySQL non supporta, inizializzando per esempio a 0 il prezzo di un articolo inserito se esso è inferiore a 1.00 ed a 10.00 se esso è superiore a tale cifra
DELIMITER // CREATE TRIGGER trg1 BEFORE INSERT ON fornituranew. Articolo FOR EACH ROW BEGIN IF NEW. Prezzo < 1.00
THEN
SET NEW. Prezzo = 0; END IF; IF NEW. Prezzo > 10.00
THEN
SET NEW. Prezzo = 10.00; END IF; END // DELIMITER;
N. B. I delimitatori differenti dallo standard; vengono utilizzati nell’ uso di funzioni, stored procedures, e triggers nelle quali occorre definire istruzioni multiple. E’ possibile definire un proprio delimitatore alternativo( nel nostro caso //) per segnalare la fine dell’ intera procedura, permettendo nel contempo a ciascuno statement di essere correttamente terminato con il; Quindi, quando il codice viene eseguito da un client mysql( come la console), il client è in grado di comprendere quando è giunto alla fine della sua definizione ed è in grado di eseguire l’ intero set di istruzioni. Si osservi che il comando DELIMITER è un commando di un client mysql( e di altri tipi di client dbms) e non è uno standard del linguaggio SQL.
N. B. Il qualificatore NEW indica proprio che il nome di colonna che stiamo utilizzando si riferisce al nuovo valore della riga che sta per essere aggiornata. NEW si può utilizzare in caso di INSERT e UPDATE. Analogamente è disponibile il qualificatore OLD che fa riferimento ai valori precedenti la modifica, e si può utilizzare in caso di UPDATE e DELETE. La modifica attraverso l’ istruzione SET è possibile solo per i valori NEW e solo nei trigger di tipo BEFORE.
N. B. Attualmente MySQL supporta un solo trigger attivo per ciascuna tabella
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 71