Triggeri pentru calcul varsta si data actualizării

Să presupunem că dorim să calculăm și să actualizăm un câmp , varsta la data curentă, în tabelul persoane ori de câte ori se introduce/actualizează data nașterii.

De asemenea, ne-ar interesa ca, de fiecare dată când actualizăm o înregistrare să se înscrie data şi ora curentă în câmpul data_upd.

Crearea tabelei

Calcul vârstă

Vom crea două triggere, la inserare, dar şi la actualizare.

Crearea Triggerului pentru INSERT

Crearea Triggerului pentru UPDATE

Explicații ale componentelor trigger-ului:

  • DELIMITER: schimbă delimitatorul standard (;) pentru a permite folosirea sa în cadrul blocului BEGIN ... END;
  • CREATE TRIGGER calc_varsta_before_insert/calc_varsta_before_update: creează trigger numit calc_varsta_before_insert/calc_varsta_before_update;
  • BEFORE INSERT: specifică faptul că triggerul se va executa înainte de a introduce un nou rând.
  • BEFORE UPDATE: specifică faptul că triggerul se va executa înainte de a actualiza un rând.
  • SET NEW.varsta = TIMESTAMPDIFF(YEAR, NEW.data_nasterii, CURDATE()): calculează vârsta ca diferență în ani dintre data nașterii (NEW.data_nasterii) și data curentă (CURDATE()). NEW.varsta – valoarea câmpului varsta care urmează să fie introdus.

Testare Trigger

  • Inserare persoană nouă:

După ce această inserare se va completa automat câmpul varsta cu valoarea calculată pentru Ion Petreanu.

  • Actualizare persoană existentă. Presupunând că vrem să schimbăm numele, prenumele şi data naşterii înregistrării cu id-ul 3, vom aplica codul:

Update data actualizării

După orice actualizare a unei înregistrări, datorită trigger-ului de mai jos, vom avea inserată data şi ora curentă la momentul acelei operaţiuni.

 

Author: Ovidiu.S

Suficient de pasionat de această zonă profesională ca, în cazul în care ştiu ceva - cât de puţin - să împărtăşesc cu alţii.

Leave a Reply