In mod implicit, terminarea unei comenzi in mysql se indica prin caracterul punct-virgula ";".
Instructiunea DELIMITER $$ defineste inceputul unui grup de comenzi unde vor fi scrise functii, proceduri, triggers care vor fi tratate si rulate de mysql ca o singura declaratie intreaga.
Sfarsitul acelui grup de comenzi se indica prin END$$.
- Pe scurt, se foloseste pentru a indica inceputul si sfarsitul unui grup de instructiuni care vor fi tratate ca o singura declaratie.
Exemplu cu explicatii:
Cod: Selectaţi tot
//mysql-ul se asigura ca nu exista in aceasi baza de date triger cu acelasi nume
DROP TRIGGER IF EXISTS `my_database`.`bfr_upd_activity`;
DELIMITER $$ //incepe grupul de proceduri, trigger sau functie
USE `my_databas`$$ //baza de date unde va fi executat rigger-ul
// prin CREATE DEFINER - userul care va beneifica de trigger
// prin TRIGGER - numele trigger-ului
// prin BEFORE UPDATE - tipul actiunii la care sa reactioneze trigger-ul
// iar FOR EACH ROW - unde sa actioneze codul
CREATE DEFINER=`root`@`localhost` TRIGGER `bfr_upd_activity` BEFORE UPDATE ON `personal` FOR EACH ROW
BEGIN
if new.stare <> 'inactiv' then //"new" retine randurile updatate in care valoare coloanei "stare" este 'inactiv'
delete from my_table where id_p = new.id; //new.id = id-ul din randurie retinute in "new"
end if;
END$$ //inica terminarea grupului de instructiuni
DELIMITER ; //reseteaza delimitatorul la valoarea implicita