Un declanșator este o procedură stocată într-o bază de date care invocă automat ori de câte ori are loc un eveniment special în baza de date. De exemplu, un declanșator poate fi invocat atunci când un rând este inserat într-un tabel specificat sau când anumite coloane din tabel sunt actualizate. Cu cuvinte simple, un declanșator este o colecție de SQL instrucțiuni cu nume specifice care sunt stocate în memoria sistemului. Acesta aparține unei clase specifice de proceduri stocate care sunt invocate automat ca răspuns la evenimentele serverului de baze de date. Fiecare declanșator are atașat un tabel.
Deoarece un declanșator nu poate fi apelat direct, spre deosebire de o procedură stocată, este denumită o procedură specială. Un declanșator este apelat automat ori de câte ori are loc un eveniment de modificare a datelor împotriva unui tabel, care este principala distincție între un declanșator și o procedură. Pe de altă parte, o procedură stocată trebuie apelată direct.
Următoarele sunt diferențele cheie dintre declanșatoare și procedurile stocate:
- Declanșatoarele nu pot fi invocate sau executate manual.
- Nu există nicio șansă ca declanșatorii să primească parametri.
- O tranzacție nu poate fi efectuată sau anulată în interiorul unui declanșator.
Sintaxă:
creați declanșator [trigger_name]
[inainte de | după]
introduce
pe [table_name]
șir comparare c#[pentru fiecare rând]
[trigger_body]
Explicația Sintaxei
- Creare declanșator [trigger_name]: creează sau înlocuiește un declanșator existent cu trigger_name.
- [inainte de | after]: Aceasta specifică când va fi executat declanșatorul.
- insert : Aceasta specifică operația DML.
- On [table_name]: Acesta specifică numele tabelului asociat cu declanșatorul.
- [pentru fiecare rând]: Aceasta specifică un declanșator la nivel de rând, adică declanșatorul va fi executat pentru fiecare rând afectat.
- [trigger_body]: Aceasta oferă operația care trebuie efectuată pe măsură ce declanșatorul este declanșat
De ce folosim declanșatoare?
Atunci când trebuie să efectuăm unele acțiuni automat în anumite scenarii dezirabile, declanșatoarele vor fi utile. De exemplu, trebuie să fim conștienți de frecvența și momentul modificărilor la un tabel care se schimbă constant. În astfel de cazuri, am putea crea un declanșator pentru a insera datele necesare într-un alt tabel dacă tabelul principal a suferit modificări.
Diferite tipuri de declanșare în SQL Server
Există două categorii de declanșatori:
- Trigger DDL
- Declanșare DML
- Declanșatoare de conectare
Declanșatoare DDL
Evenimentele de comandă Data Definition Language (DDL) precum Create_table, Create_view, drop_table, Drop_view și Alter_table determină activarea declanșatorilor DDL.
SQL Server
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Ieșire:
Declanșatoare DML
Datele utilizează evenimentele de comandă de manipulare (DML) care încep cu Insert, Update și Delete declanșează declanșatoarele DML. corespunzând insert_table, update_view și delete_table.
tuplu java
SQL Server
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Ieșire:
Declanșatoare de conectare
Declanșatoarele de conectare sunt declanșări ca răspuns la un eveniment LOGON. Când o sesiune de utilizator este creată cu o instanță SQL Server după ce procesul de autentificare al înregistrării este încheiat, dar înainte de stabilirea unei sesiuni de utilizator, are loc evenimentul LOGON. Ca rezultat, mesajele instrucțiunii PRINT și orice erori generate de declanșator vor fi toate vizibile în jurnalul de erori SQL Server. Erorile de autentificare împiedică utilizarea declanșatoarelor de conectare. Acești declanșatori pot fi utilizați pentru a urmări activitatea de conectare sau pentru a stabili o limită a numărului de sesiuni pe care le poate avea o anumită autentificare pentru a audita și gestiona sesiunile de server.
Cum arată SQL Server Trigger?
Declanșatorul show sau list este util atunci când avem multe baze de date cu multe tabele. Această interogare este foarte utilă atunci când numele tabelelor sunt aceleași în mai multe baze de date. Putem vizualiza o listă cu fiecare declanșator disponibil în SQL Server utilizând comanda de mai jos:
Sintaxă:
FROM sys.triggers, SELECT name, is_instead_of_trigger
IF tip = ‘TR’;
SQL Server Management Studio face foarte simplu afișarea sau listarea tuturor declanșatorilor care sunt disponibile pentru orice tabel dat. Următorii pași ne vor ajuta să realizăm acest lucru:
Du-te la Baze de date meniu, selectați baza de date dorită, apoi extindeți-o.
- Selectează Mese meniu și extindeți-l.
- Selectați orice tabel specific și extindeți-l.
Vom găsi aici diverse opțiuni. Când alegem Declanșatoare opțiunea, afișează toate declanșatoarele disponibile în acest tabel.
ÎNAINTE și DUPĂ Declanșare
BEFORE declanșatoarele rulează acțiunea de declanșare înainte ca instrucțiunea de declanșare să fie executată. AFTER declanșatoarele rulează acțiunea de declanșare după rularea instrucțiunii de declanșare.
Exemplu
Baza de date a rapoartelor studenților, în care se înregistrează evaluarea notelor elevilor. Într-o astfel de schemă, creați un declanșator, astfel încât totalul și procentul marcajelor specificate să fie inserate automat ori de câte ori este inserată o înregistrare.
Aici, un declanșator va fi invocat înainte ca înregistrarea să fie inserată, astfel încât BEFORE Tag să poată fi utilizată.
Să presupunem că Schema bazei de date
Interogare
mysql>>desc Student;>
Declanșare SQL la instrucțiunea problemei.
Instrucțiunea SQL de mai sus va crea un declanșator în baza de date a studenților în care ori de câte ori sunt introduse notele subiectelor, înainte de a introduce aceste date în baza de date, declanșatorul va calcula acele două valori și le va insera cu valorile introduse. adică
Ieșire
În acest fel, declanșatoarele pot fi create și executate în bazele de date.
Avantajul declanșatorilor
Beneficiile utilizării declanșatorilor în SQL Server includ următoarele:
- Regulile pentru obiectele bazei de date sunt stabilite prin declanșatori, care provoacă anularea modificărilor dacă nu sunt îndeplinite.
- Declanșatorul va examina datele și, dacă este necesar, va face modificări.
- Putem impune integritatea datelor datorită declanșatorilor.
- Datele sunt validate folosind declanșatoare înainte de a fi inserate sau actualizate.
- Declanșatoarele ne ajută să păstrăm un jurnal de înregistrări.
- Datorită faptului că nu trebuie să fie compilate de fiecare dată când sunt executate, declanșatoarele îmbunătățesc performanța interogărilor SQL.
- Codul clientului este redus de declanșatoare, economisind timp și forță de muncă.
- Întreținerea declanșatorului este simplă.
Dezavantaj de Triggere
Dezavantajele utilizării declanșatorilor în SQL Server includ următoarele:
- Numai declanșatoarele permit utilizarea validărilor extinse.
- Sunt utilizate declanșatoare automate, iar utilizatorul nu știe când sunt executate. În consecință, este dificil să depanați problemele care apar în nivelul bazei de date.
- Suplimentarul serverului de bază de date poate crește ca urmare a declanșatorilor.
- Într-o singură instrucțiune CREATE TRIGGER, putem specifica aceeași acțiune de declanșare pentru mai multe acțiuni ale utilizatorului, cum ar fi INSERT și UPDATE.
- Doar baza de date curentă este disponibilă pentru crearea declanșatorilor, dar aceștia pot face referiri la obiecte din afara bazei de date.
întrebări frecvente
Î1: Ce este un declanșator SQL?
Răspuns:
Un declanșator SQL este un obiect de bază de date care este asociat cu un tabel și execută automat un set de instrucțiuni SQL atunci când are loc un anumit eveniment pe acel tabel. Declanșatorii sunt utilizați pentru a aplica regulile de afaceri, pentru a menține integritatea datelor și pentru a automatiza anumite acțiuni într-o bază de date. Acestea pot fi declanșate de diverse evenimente, cum ar fi inserarea, actualizarea sau ștergerea datelor dintr-un tabel și vă permit să efectuați operațiuni suplimentare pe baza acestor evenimente.
Î2: Cum funcționează declanșatoarele SQL?
Răspuns:
Declanșatoarele SQL sunt definite folosind instrucțiuni SQL și sunt asociate cu un anumit tabel. Când evenimentul de declanșare definit (de exemplu, INSERT, UPDATE, DELETE) are loc pe acel tabel, codul de declanșare asociat este executat automat. Codul de declanșare poate consta din instrucțiuni SQL care pot manipula date din același tabel sau din alte tabele, pot impune constrângeri sau pot efectua alte acțiuni. Declanșatoarele sunt executate în sfera tranzacției și pot fi definite pentru a fi executate fie înainte, fie după evenimentul de declanșare.
Î3: Care sunt beneficiile utilizării declanșatorilor SQL?
Răspuns:
Beneficiile utilizării declanșatorilor SQL includ:
Integritatea datelor: Declanșatoarele vă permit să aplicați reguli de afaceri complexe și constrângeri la nivel de bază de date, asigurându-vă că datele rămân consecvente și precise.
Automatizare: Declanșatorii pot automatiza sarcini repetitive sau complexe executând acțiuni predefinite ori de câte ori are loc un eveniment specificat. Acest lucru reduce nevoia de intervenție manuală și îmbunătățește eficiența.
sortați o listă de matrice în javaTrasee de audit: declanșatoarele pot fi utilizate pentru a urmări modificările aduse datelor, cum ar fi înregistrarea modificărilor într-un tabel de audit separat. Acest lucru ajută la auditarea și menținerea unui istoric al modificărilor datelor.
Validarea datelor: Declanșatorii pot efectua verificări suplimentare de validare asupra datelor înainte ca acestea să fie inserate, actualizate sau șterse, asigurându-se că în baza de date sunt stocate numai datele valide și conforme.