Recomandat, 2022

Alegerea Editorului

Diferența dintre declanșator și procedură

Trigger și procedură sunt componente ale SQL avansate. Declanșator și procedură, ambele realizează o sarcină specificată în execuția lor. Diferența fundamentală dintre declanșator și procedură este că declanșatorul se execută automat la apariția unui eveniment, în timp ce procedura este executată atunci când este invocată în mod explicit.

Să discutăm câteva diferențe între declanșator și procedură, cu ajutorul unei diagrame de comparație prezentată mai jos.

Diagramă de comparație

Bazele comparațieideclanșatoareProceduri
De bazăAcestea sunt executate automat la apariția evenimentului specificat.Acestea pot fi executate ori de câte ori este necesar.
apelDeclanșatorii nu pot fi chemați în cadrul unei proceduri.Dar, puteți apela o procedură în interiorul unui declanșator.
ParametruNu putem trece parametrii la declanșatoare.Putem trece parametrii la proceduri.
ÎntoarcereTriggerul nu întoarce niciodată valoarea la execuție.Procedura poate returna valori / valori la execuție.

Definiția Trigger

Declanșatorul este ca o procedură care se execută automat la apariția unui eveniment specificat. Ca și procedura, declanșatorul nu trebuie să fie numit în mod explicit. Declanșatoarele sunt create, pentru a efectua anumite sarcini ca răspuns la apariția unor evenimente specificate.

Declanșatorul poate fi invocat ca răspuns la instrucțiunile DDL (DELETE, INSERT sau UPDATE) sau la instrucțiunile DML (DELETE, INSERT sau UPDATE) sau la unele operații de bază de date (SERVERERROR, LOGON, LOGOFF, STARTUP sau SHUTDOWN).

Declanșatorul constă din trei componente, după cum urmează:

  • Eveniment : evenimentul este apariția unui incident care va determina executarea declanșatorului. Declanșatorul poate fi comandat să execute fie înainte ca un eveniment să apară, fie poate fi comandat să fie executat după executarea unui eveniment.
  • Stare : Este o parte opțională a declanșatorului. Dacă nu se specifică declanșatorul se va executa ca eveniment specificat. Dacă condiția este specificată, atunci ea va verifica regulile pentru a determina dacă declanșatorul ar trebui să fie executat.
  • Acțiune : Acțiunea este o setare a instrucțiunilor SQL care vor fi executate la executarea declanșatorului.

Forma generală de creare a unui eveniment este discutată mai jos:

 CREAȚI TRIGGER ÎNAINTE DE ACȚIUNE DE CONDIȚIE; 

Aici, condiția este opțională.

Definiția procedurilor

Procedura poate fi luată ca o unitate de program creată pentru a efectua o anumită sarcină și este stocată în baza de date. Acestea sunt invocate de instrucțiunea SQL ori de câte ori este necesar. Procedurile sunt ca și funcțiile definite de utilizator care sunt definite de dezvoltatori. Procedurile pot fi invocate utilizând CALL sau EXECUTE .

Procedurile sunt utile în următoarele situații:

  • Dacă procedura este cerută de mai multe alte aplicații, atunci acestea pot fi stocate pe server, astfel încât acestea să poată fi invocate de orice aplicație. Acesta va reduce efortul de duplicare a procedurii de la o bază de date la alta și, de asemenea, îmbunătățește modularitatea software-ului.
  • Pe măsură ce procedura se execută pe server, se va reduce transferul de date și, de asemenea, se va reduce costul de comunicare.
  • Procedurile pot fi folosite pentru a verifica constrângerile complexe care depășesc puterea declanșatorului.

Să discutăm despre forma generală de creare a unei proceduri:

 CREATE PROCEDURE () RETURNS; 

Aici parametrii și declarațiile locale sunt opționale. Acestea sunt menționate doar atunci când sunt necesare. Declarația de mai jos descrie chemarea procedurilor.

 APEL () ; 

Diferențele cheie între declanșator și procedură

  1. Principala diferență dintre declanșator și procedură este că un declanșator este o afirmație care devine invocată automat atunci când a apărut un eveniment. Pe de altă parte, procedura este invocată ori de câte ori este necesară.
  2. Se poate defini o procedură în interiorul unui declanșator. Dar, un declanșator nu este definit niciodată în cadrul unei proceduri deoarece declanșatorul trebuie invocat automat la apariția oricărui eveniment.
  3. Putem trece parametrii la proceduri, dar nu putem trece parametrii care să declanșeze deoarece nu sunt invocați de noi.
  4. O procedură poate returna valorile parametrilor sau codul, dar un declanșator nu poate.

Concluzie:

Declanșatoarele sunt utile, însă ele sunt evitate dacă există o alternativă la acestea, deoarece sporesc complexitatea datelor. Uneori declanșatorii sunt și înlocuiți printr-o procedură adecvată.

Top