Mysql și mariadb declanșează

Declanseaza in MySQL (de la Trigger limba engleză.) - este un tip special SQL stocată limba procedură care este executată atunci când un anumit eveniment (de exemplu, insert, update, șterge înregistrări). Nu poate fi chemat manual. Sprijinul pentru această procedură a devenit disponibil în MySQL 5.0.2, precum și în toate versiunile de MariaDB.







Procedura este stocată în DBMS-ul MySQL, iar apelul său nu depinde de limba de programare sau de aplicația folosită.

Beneficiile folosirii declanșatoarelor MySQL

Pe lângă faptul că utilizarea declanșatorilor nu depinde de aplicație și de limbajul de programare utilizat, există și alte avantaje:

  1. Reduceți traficul de rețea
  2. Minimizarea resurselor utilizate
  3. Nu este nevoie să transferați rezultate intermediare în aplicație
  4. Asigurarea integrității datelor
  5. Triggerul pornește automat

Toate tranzacțiile sunt considerate tranzacții, deci dacă faceți o greșeală, puteți să reveniți cu ușurință la unele modificări.

Sintaxă pentru crearea unui declanșator

Sintaxa de declanșare a declanșatorului este destul de simplă:

CREAȚI TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

  • trigger_name - numele de declanșare
  • trigger_time - Timpul de răspuns al declanșatorului. ÎNAINTE de - înainte de eveniment. După - după eveniment.
  • trigger_event - Eveniment:
    1. inserați - evenimentul este ridicat de inserție, sarcină de date, înlocuiți
    2. update - evenimentul este ridicat de operatorul de actualizare
    3. delete - evenimentul este ridicat de ștergere, înlocuire. Instrucțiunile DROP TABLE și TRUNCATE nu activează executarea declanșatorului
  • tbl_name - nume tabel
  • expresia trigger_stmt care este executată când triggerul este declanșat






Este demn de remarcat faptul că declanșatorii pot fi legați nu de o masă, ci, direct, dintr-o vedere (VIEW). În acest caz, cu ajutorul lor, se implementează mecanismul "vederii actualizate".

Exemplu de creare a unui declanșator

Să luăm în considerare următorul exemplu. Avem 2 tabele de test și de jurnal. Creați un declanșator care va scrie evenimentul în tabelul de jurnal atunci când adăugați o intrare în tabela de testare.

Creați tabele de testare:

/ * Tabela de testare, pe care o vom urma * /
CREATE TABLE `test` (` id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `TEXT content` NOT NULL);

/ * Jurnalul tabelului, unde vom scrie informații * /
CREATE TABLE `log` (` id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `msg` VARCHAR (255) NOT NULL,` time` TIMESTAMP NOT NULL CURRENT_TIMESTAMP DEFAULT, `row_id` INT (11) NOT NULL);

/ * Crearea unui trigger * /
DELIMITER | CREATE TRIGGER `update_test` DUPĂ test` INSERT ON` pentru fiecare rând BEGIN INSERT INTO log Set msg = 'insert', ROW_ID = NEW.id; END;

Astfel, am creat declanșatorul update_test, care se va declanșa atunci când se adaugă o intrare în tabela de testare. Și, acum, aceeași înregistrare va apărea în tabelul de jurnal. Și row_id va stoca ID-ul de înregistrare.

Aici, instrucțiunea DELIMITER este utilizată pentru a determina semnul începutului / sfârșitului procedurii. Poate fi orice. Principalul lucru este că acest semn nu este folosit în procedura însăși.

Pentru a vedea toate declanșatoarele create, utilizați comanda:

Și pentru a șterge declanșatorul, folosiți comanda DROP TRIGGER. În exemplul nostru, pentru a șterge declanșatorul creat:

DROP TRIGGER `update_test`;

Caracteristicile utilizării declanșatorilor

Ce trebuie să acordați atenție atunci când utilizați declanșatoarele:

  1. Dacă ștergeți o tabelă la care declanșatoarele sunt legate, acestea vor fi, de asemenea, șterse
  2. Declanșatorul este declanșat pentru fiecare înregistrare din tabel. Dacă interogarea dvs. afectează, de exemplu, 5 intrări, declanșatorul se va executa exact de 5 ori
  3. Pentru a crea un declanșator, trebuie să aveți privilegiul SUPER

Când proiectul dvs. a crescut deja la o dimensiune serioasă, va trebui să închiriați un server în Centrul de date. În RigWEB, fiecare server dedicat este prevăzut cu administrare gratuită. Vă vom ajuta să configurați declanșatoarele, dacă este necesar.

VPS / VDS pentru 389 r. de la RigWEB.RU cu administrație







Articole similare

Trimiteți-le prietenilor: