Salt la conținutul principal
Modulul 12 · Lecția 4 din 448/57 în curs~12 min
Lecții din modul (4/4)

Declanșatoare practice și audit

Acum că am învățat cum să facem gloanțe inteligente (Funcțiile de declanșare), trebuie să le montam pe arme Primed reale în așteptarea unui eveniment: iată declanșatoarele reale! Un declanșator atașează în mod oficial o funcție creată anterior și îi indică să declanșeze „ÎNAINTE” sau „DUPĂ” un anumit eveniment CRUD pe un anumit tabel.

Există multe opțiuni; de exemplu, FOR EACH ROW o declanșează o dată pe rând afectat, așa că dacă o interogare în bloc este o ACTUALIZARE GLOBALĂ peste 5 milioane de rânduri, ar declanșa 5 milioane de microexecuții — aveți grijă cu asta!

SQL
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();

Declanșatorul este invizibil pentru JavaScript și va menține în mod autonom stocul perfect consistent pe baza strict pe actualizările transmise în siguranță motorului.

Automatizarea Updated_At

Există o problemă de afaceri veșnic verde în care uităm să trecem { updated_at: new Date() } în modelele noastre de actualizare JS. O funcție de declanșare set_updated_at combinată cu un declanșator BEFORE UPDATE elimină această neplăcere, actualizând în tăcere fiecare modificare a înregistrării în mod autopoietic.

Încercați-l singur

Exercițiu#sql.m12.l4.e1
Încercări: 0Se încarcă…

Creați un declanșator numit „trg_force_uppercase”.\nAtașați-l în faza „ÎNAINTE INSERT” de pe tabelul „clienți”.\nForțați calculul rând cu rând „PENTRU FIECARE Rând” și invocați execuția funcției „force_uppercase_name()”. cod, apoi adăugați declarația de declanșare.

Se încarcă editorul...
Afișează indiciu

Sintaxa text: creați mai întâi funcția, apoi adăugați CREATE TRIGGER trg_force_uppercase BEFORE INSERT ON clienți PENTRU FIECARE RÂND EXECUTE FUNCȚIA force_uppercase_name();

Soluție disponibilă după 3 încercări

Exercițiu#sql.m12.l4.e2
Încercări: 0Se încarcă…

Omoara senzorul! Uneori, vrem să împingeți fișierele de semințe brute sau modificări native temporare, ocolind auditurile zgomotoase.\nLăsarea unui declanșator este incredibil de simplă (nu ștergeți funcția organică, ștergeți doar legarea senzorului).\nUtilizați cuvântul cheie „DROP TRIGGER”, specificând numele și atașamentul global.

Se încarcă editorul...
Afișează indiciu

Nu uitați să specificați de unde. DROP TRIGGER trg_force_uppercase ON clienții;

Soluție disponibilă după 3 încercări