La ce foloseste DELIMITER $$ in mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
MarPlo
Administratorul site-ului
Mesaje:4343

La ce foloseste DELIMITER $$ in mysql

Iata la ce foloseste DELIMITER $$ in MySQL.
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