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!
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
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.
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
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.
Mostra suggerimento
Ricordati di indicare da dove. DROP TRIGGER trg_force_uppercase ON customers;
Soluzione disponibile dopo 3 tentativi