Database
 sql >> Database >  >> RDS >> Database

Cosa sono i Trigger in SQL e come implementarli?

Un trigger in SQL è un codice procedurale che viene eseguito automaticamente in risposta a determinati eventi su una tabella specificata. È importante capire come questi piccoli codici facciano un'enorme differenza nelle prestazioni del database. In questo articolo imparerai come implementare i trigger insieme ad esempi.

I seguenti argomenti saranno trattati in questo articolo:

  • Cos'è un trigger?
  • Sintassi ed esempio
  • Operazione in Trigger
  • Vantaggio e svantaggio

Cos'è un trigger?

I trigger sono i codici SQL che vengono eseguiti automaticamente in risposta a determinati eventi su una tabella particolare. Questi sono usati per mantenere l'integrità dei dati. Un trigger in SQL funziona in modo simile a un trigger del mondo reale. Ad esempio, quando si preme il grilletto della pistola viene sparato un proiettile. Lo sappiamo tutti, ma come è correlato ai Trigger in SQL? Per capirlo consideriamo una situazione ipotetica.

John è il responsabile marketing di un'azienda. Quando i dati di un nuovo cliente vengono inseriti nel database dell'azienda, deve inviare il messaggio di benvenuto a ogni nuovo cliente. Se si tratta di uno o due clienti John può farlo manualmente, ma cosa succede se il conteggio è superiore a mille? Ebbene, in tali scenari i trigger tornano utili.

Quindi, ora John può facilmente creare un trigger che invierà automaticamente un'e-mail di benvenuto ai nuovi clienti una volta inseriti i loro dati nel database. Quindi spero che tu sia chiaro con l'introduzione di Trigger in SQL.

Ricorda sempre che non possono esserci due trigger con tempo di azione ed evento simili per una tabella. Ad esempio, non possiamo avere due trigger BEFORE UPDATE per una tabella. Ma possiamo avere un PRIMA AGGIORNAMENTO e un PRIMA INSERT trigger o un PRIMA AGGIORNAMENTO e un DOPO AGGIORNAMENTO trigger.

Prima di approfondire i fondamenti dei trigger, ti suggerisco di comprendere i concetti di base e normalizzazione di SQL in modo da avere una migliore comprensione dei trigger in SQL.

Sintassi ed esempio

Osserviamo ora la sintassi di un trigger.

Create Trigger Trigger_Name
(Before | After)  [ Insert | Update | Delete]
on [Table_Name]
[ for each row | for each column ]
[ trigger_body ]

Ora permettetemi di scomporre questa sintassi e spiegare ogni singola parte in dettaglio.

  • Crea trigger
    Queste due parole chiave vengono utilizzate per specificare che verrà dichiarato un blocco trigger.
  • Nome_trigger
    Specifica il nome del trigger. Il nome del trigger deve essere univoco e non deve essere ripetuto.
  • ( Prima di | Dopo )
    Specifica quando verrà eseguito il trigger. Ci dice il momento in cui viene avviato il trigger, ovvero prima dell'evento in corso o dopo.
  • Prima dei trigger vengono utilizzati per aggiornare o convalidare i valori dei record prima che vengano salvati nel database.
  • Dopo i trigger vengono utilizzati per accedere ai valori dei campi impostati dal sistema e per apportare modifiche ad altri record. I record che attivano il trigger dopo sono di sola lettura. Non possiamo utilizzare il trigger After se vogliamo aggiornare un record perché porterà a un errore di sola lettura.
  • [ Inserisci | Aggiorna | Elimina ]
    Queste sono le operazioni DML e possiamo usarne una in un dato trigger.
  • su [ Nome_tabella ]
    È necessario menzionare il nome della tabella su cui viene applicato il trigger. Non dimenticare di utilizzare su parola chiave e assicurati anche che la tabella selezionata sia presente nel database.
  • [ per ogni riga | per ogni colonna]
    1. Il trigger a livello di riga viene eseguito prima o dopo qualsiasi valore di colonna di una riga modifiche
    2. Il trigger a livello di colonna viene eseguito prima o dopo la colonna specificata modifiche
  • [ corpo_attivatore]
    Consiste in query che devono essere eseguite quando viene chiamato il trigger.

Quindi si trattava di un semplice trigger. Ma possiamo anche creare un trigger nidificato in grado di eseguire più processi. Anche gestirlo e terminarlo al momento giusto è molto importante. Se non terminiamo correttamente il trigger, potrebbe portare a un ciclo infinito.

Ci si potrebbe chiedere in quale scenario possiamo utilizzare il trigger annidato. Invece di darti una risposta su misura, lasciami condividere uno scenario con te, che ti aiuterà a comprendere meglio il trigger annidato. Continuando dallo scenario precedente, John ha inviato un'e-mail per ogni nuovo cliente aggiunto al database dell'azienda. Ora, cosa succede se desidera tenere traccia del numero di clienti a cui è stata inviata l'e-mail? Ora John deve creare un trigger nidificato per tenere traccia del conteggio insieme all'invio di un'e-mail.

Quindi riguardava la sintassi dei trigger, ora proviamo a implementare un esempio di trigger in SQL.

Esempio di Trigger:

Nel trigger sottostante, stiamo cercando di calcolare la percentuale dello studente non appena i suoi dettagli vengono aggiornati nel database.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Qui il "NOVITÀ" la parola chiave si riferisce alla riga interessata.

Operazioni in Trigger

Possiamo eseguire molte operazioni usando i trigger. Alcuni possono essere semplici e altri un po' complessi, ma una volta se esaminiamo la query è facile da capire.

  • CASCI UN grilletto
DROP TRIGGER trigger name;
  • Mostra un trigger

Il codice seguente mostrerà tutti i trigger presenti.

SHOW TRIGGERS;

Il codice seguente visualizzerà tutti i trigger presenti in un determinato database.

SHOW TRIGGERS
IN database_name;

Esempio:

SHOW TRIGGERS IN edureka;

Nell'esempio sopra, verranno visualizzati tutti i trigger presenti nel database denominato Edureka.

Osserviamo anche alcune delle principali varianti dei trigger ovvero Prima dell'inserimento e Dopo l'inserimento. Abbiamo già visto un trigger nell'esempio. Ma con l'aiuto della tabella vediamo come funziona esattamente.

Come abbiamo già capito come creare un trigger, ora capiamo le due varianti del trigger che sono Prima dell'inserimento e Dopo l'inserimento. per implementarli, creiamo una tabella studenti con varie colonne come mostrato di seguito:

CREATE TABLE Student(
studentID INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(20),
LName VARCHAR(20),
Address VARCHAR(30),
City VARCHAR(15),
Marks INT,
PRIMARY KEY(studentID)
);

Ora se eseguiamo questa query otteniamo la seguente tabella.

Proviamo a utilizzare la prima variante, ovvero Prima dell'inserimento

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Qui, quando inseriamo automaticamente i dati nella tabella degli studenti, verrà invocato il trigger. Il trigger aggiungerà 100 alla colonna dei voti nella colonna dello studente.

Ora usiamo la seconda variante, cioè Dopo Inserisci

Per utilizzare questa variante abbiamo bisogno di un'altra tabella, ad esempio Percentuale in cui il trigger memorizzerà i risultati. Utilizza il codice seguente per creare la tabella delle percentuali.

create table Final_mark(
per int );

Ora usiamo il trigger dopo l'inserimento

CREATE TRIGGER total_mark
after insert 
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);

Qui quando inseriamo i dati nella tabella, attivatore total_mark memorizzerà il risultato nella tabella Final_mark.

Riguardava l'operazione sui trigger, ora andiamo avanti e guardiamo i suoi vantaggi e svantaggi.

Vantaggi e svantaggi dei trigger

Vantaggi

  • Forzare la sicurezza approvazioni sul tavolo presenti nel database
  • I trigger forniscono un altro modo per verificare l'integrità dei dati
  • Contrattacco non valido scambi
  • I trigger gestiscono gli errori dal livello del database
  • Normalmente i trigger possono essere utili per ispezione dei dati modifiche nelle tabelle
  • I trigger offrono un modo alternativo per eseguire sattività pianificate . Utilizzando i trigger, non è necessario attendere l'esecuzione degli eventi pianificati perché i trigger vengono richiamati automaticamente prima o dopo che viene apportata una modifica ai dati in una tabella

Svantaggio s

  • I trigger possono fornire solo convalide estese , ovvero non tutti i tipi di convalide. Per semplici convalide, puoi utilizzare i vincoli NOT NULL, UNIQUE, CHECK e FOREIGN KEY
  • I trigger possono aumentare il overhead della banca dati
  • Può essere difficilerisolvere i problemi per i trigger perché vengono eseguiti automaticamente nel database, che potrebbe non essere invisibile alle applicazioni client

Questo ci porta alla fine di questo articolo Trigger in SQL. Spero che tu abbia compreso i concetti di Trigger.

Se desideri saperne di più su MySQL e conoscere questo database relazionale open source, dai un'occhiata al nostro MySQL DBA Certification Training che viene fornito con formazione dal vivo con istruttore e reale -esperienza di progetto di vita. Questa formazione ti aiuterà a comprendere in modo approfondito MySQL e a raggiungere la padronanza dell'argomento.

Hai una domanda per noi? Per favore menzionalo nella sezione commenti di questo Trigger in SQL e ti risponderemo.