Vai al contenuto
eLearner.app
Modulo 12 · Lezione 4 di 448/57 nel corso~12 min
Lezioni del modulo (4/4)

Trigger Pratici ed Audit

Ora che abbiamo imparato a forgiare proiettili intelligenti (le Trigger Function), dobbiamo montarli su vere Armi Innescate in attesa dell'evento: ecco i Trigger veri e propri! Un trigger aggancia formalmente una funzione precedentemente formata e la istruisce ad essere valutata "BEFORE" o "AFTER" un particolare evento crud per una determinata Tabella.

Esistono tantissime opzioni, ad esempio FOR EACH ROW la lancia per singola riga affetta, in caso la query massiva fosse un UPDATE GLOBALE per 5 milioni di righe, lancerebbe 5 milioni di micro esecuzioni, e per questo motivo, occorre starci attenti!

SQL
CREATE TRIGGER sync_inventory_trigger
-- Opzioni evento
AFTER INSERT OR UPDATE ON order_items
-- Modus Operandi (singolare o globale macro-blocco FOR EACH STATEMENT)
FOR EACH ROW
-- Esegui l'azione forgiata
EXECUTE FUNCTION update_stock();

Il trigger è invisibile a Javascript, e manterrà autonomamente lo stock perfettamente sano basandosi strettamente su update inseriti al sicuro all'engine.

L'Automazione del Updated_At

Esiste un problema di business perenne in cui dimentichiamo di passare { updated_at: new Date() } nei nostri update model in JS. Una funzione trigger set_updated_at combinata assieme a un trigger BEFORE UPDATE toglie via questa noia, aggiornando segretamente ogni modifica di record autopoieticamente.

Prova tu

Esercizio#sql.m12.l4.e1
Tentativi: 0Caricamento…

Crea un trigger con nome 'trg_force_uppercase'.\nAssegnalo in fase 'BEFORE INSERT' sulla tabella 'customers'.\nObbliga il calcolo riga-per-riga 'FOR EACH ROW' ed invoca l'esecuzione della funzione 'force_uppercase_name()'.\nNota: Ricrea anche la funzione UDF 'force_uppercase_name' (visto che l'ambiente è isolato) all'inizio del codice, poi accodale la dichiarazione del trigger.

Caricamento editor…
Mostra suggerimento

Sintassi testuale: crea prima la funzione, poi aggiungi CREATE TRIGGER trg_force_uppercase BEFORE INSERT ON customers FOR EACH ROW EXECUTE FUNCTION force_uppercase_name();

Soluzione disponibile dopo 3 tentativi

Esercizio#sql.m12.l4.e2
Tentativi: 0Caricamento…

Cancella il sensore! Alle volte vogliamo poter far passare dei raw seed files o modifiche native temporanee bypassando audit noiosi.\nE' incredibilmente lineare far fuori un trigger (Non si elimina la funzione organica, si elimina il legame sensoriale).\nUsa la keyword 'DROP TRIGGER' indicando nome ed impiantazione globale.

Caricamento editor…
Mostra suggerimento

Ricordati di indicare da dove. DROP TRIGGER trg_force_uppercase ON customers;

Soluzione disponibile dopo 3 tentativi