triggers pl sql tutorial with example programs
Scopri tutto sui trigger in PL SQL, sui loro tipi, utilizzo e vantaggi:
Nel Transazioni PL SQL tutorial di Serie PL / SQL , abbiamo imparato a conoscere le istruzioni COMMIT, ROLLBACK e SAVEPOINTS.
In questo articolo, esploreremo i trigger in PL SQL e i loro vantaggi, tipi e utilizzo. Discuteremo come creare, attivare, abilitare e disabilitare i trigger PL / SQL con l'aiuto di programmi di esempio.
Cominciamo con la discussione !!
Cosa imparerai:
Trigger in PL / SQL
Un programma memorizzato che viene attivato per impostazione predefinita o da alcuni eventi viene chiamato trigger.
Un trigger viene eseguito a causa delle seguenti circostanze elencate di seguito:
- Da un'istruzione DDL (Data Definition Language) come DROP, ALTER o CREATE.
- Da un'istruzione DML (Data Manipulation Language) come UPDATE, INSERT o DELETE.
- Da un'azione del database come SHUTDOWN, STARTUP, LOGOFF e LOGON.
È possibile impostare un trigger su uno schema, una vista o un database a cui è associato un evento.
Vantaggi dei trigger
Questi sono elencati di seguito:
- Capacità di far rispettare l'integrità referenziale.
- Capacità di monitoraggio.
- Possibilità di registrare e conservare i dati durante l'accesso alle tabelle.
- Possibilità di interrompere le transazioni non valide.
- Capacità di applicare funzionalità di sicurezza.
- Capacità di produrre valori di colonna derivati per impostazione predefinita.
Usi dei trigger
Questi sono elencati di seguito:
- Previene le transazioni improprie.
- Accumula informazioni sull'utilizzo della tabella.
- Monitorare le informazioni critiche.
Tipi di trigger in PL / SQL
I trigger possono essere classificati in base ai parametri. I tipi di trigger sono elencati di seguito:
# 1) Classificazione a livello di trigger.
- ROW Level trigger: Viene eseguito per ogni record aggiornato da un'istruzione DML.
- DICHIARAZIONE Livello trigger: Viene eseguito solo una volta dall'istruzione dell'evento.
# 2) Classificazione dei tempi di attivazione.
- PRIMA del trigger: Viene eseguito prima dell'evento specifico che ha avuto luogo.
- DOPO il trigger: Viene eseguito dopo l'evento specifico che ha avuto luogo.
- INVECE DI trigger: È un tipo speciale di trigger e viene eseguito per ogni record aggiornato da un'istruzione DML.
# 3) Classificazione dell'evento trigger.
- Trigger DML: Viene eseguito se viene eseguito un evento DML come UPDATE, INSERT o DELETE.
- DDL trigger: Viene eseguito se viene eseguito un evento DDL come DROP, ALTER o CREATE.
- Trigger DATABASE: Viene eseguito se si è verificato un evento del database come SHUTDOWN, STARTUP, LOGOFF e LOGON.
Crea trigger
Sintassi per la creazione di un trigger:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Qui,
- CREA (O SOSTITUISCI) TRIGGER trigger_n - Serve per creare, sostituire o aggiornare un trigger con nome trigger_n.
- DOPO - Questo serve per determinare l'ora in cui verrà attivato il trigger. INSTEAD OF serve per creare un trigger che ha una vista.
- ELIMINA - Serve per eseguire le azioni DML.
- (OF column_n) - Questo serve per menzionare il nome della colonna che deve essere modificato.
- (ON table_n) - Questo serve per menzionare il nome della tabella che è associato al trigger.
- (RIFERIMENTO VECCHIO COME NUOVO COME n) - Questo serve per fare riferimento ai valori vecchi e nuovi mediante l'istruzione DML come UPDATE, INSERT o DELETE.
- (PER OGNI RIGA) - Ciò determina un trigger a livello di riga, ovvero il trigger verrà attivato per ogni riga modificata, altrimenti il trigger verrà attivato solo una volta quando viene eseguita l'istruzione SQL, noto come trigger a livello di tabella.
- QUANDO (condizione) - Ciò fornisce una condizione per le righe per le quali verrà eseguito il trigger. Questo è applicabile solo ai trigger a livello di riga.
Consideriamo ancora una tabella che ha un nome ALUNNO .
Creiamo ora un trigger a livello di riga per la tabella STUDENT che verrebbe eseguita dall'istruzione DML come UPDATE, INSERT o DELETE su quella tabella. Il trigger calcolerà e mostrerà la differenza di età tra i valori attuali e quelli precedenti.
Implementazione del codice per la creazione di trigger:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Output del codice sopra:
Il codice sopra ha alcune caratteristiche importanti. Sono elencati di seguito:
- Per un trigger a livello di tabella, gli indirizzi VECCHIO e NUOVO non sono disponibili. Possiamo usare questi riferimenti per trigger a livello di record.
- Se vogliamo applicare un'altra query nello stesso trigger, è necessario utilizzare la parola chiave AFTER come trigger che può modificare nuovamente una tabella solo dopo che le modifiche precedenti sono state applicate correttamente.
- Il trigger discusso in precedenza viene eseguito prima di qualsiasi azione DELETE, UPDATE o INSERT sulla tabella. Tuttavia, possiamo anche progettare un trigger che viene attivato anche in una singola operazione ( per esempio, AFTER INSERT che eseguirà il trigger ogni volta che viene inserito un record con l'aiuto dell'operazione INSERT sulla tabella).
Attivazione di trigger in PL SQL
Per attivare il trigger precedente, dobbiamo eseguire qualsiasi operazione DML come DELETE, INSERT o UPDATE sulla tabella. Inseriamo nuovamente alcuni valori nella tabella Studente con l'aiuto della query seguente:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Una volta completata l'operazione INSERT nella tabella Student, il trigger age_changes viene eseguito.
L'output del codice della query:
Poiché viene creato un nuovo record e l'età precedente non è disponibile, l'età precedente e Differenza d'età il calcolo risulta nullo nell'output precedente.
Ora lasciaci modificare un record con l'istruzione UPDATE con l'aiuto della query seguente:
UPDATE student SET age = age + 1 WHERE code = 7;
Una volta completata l'operazione UPDATE nella tabella Student, il trigger age_changes viene eseguito.
L'output della query precedente:
NUOVA E VECCHIA clausola
Una nuova clausola viene utilizzata per memorizzare il nuovo valore per le colonne della tabella per l'esecuzione del trigger. Viene utilizzato nei trigger a livello di record. Una vecchia clausola viene utilizzata per memorizzare il vecchio valore per le colonne della tabella per l'esecuzione del trigger. Viene anche utilizzato nei trigger a livello di record.
Pertanto, la nuova e la vecchia clausola vengono utilizzate per contenere e fare riferimento ai valori nuovi e vecchi all'interno di un corpo trigger.
Trigger composto
Un trigger composto viene utilizzato per definire le operazioni per tutti i punti di temporizzazione all'interno del corpo del trigger. Fornisce la disposizione per unire tutte le azioni in tempi diversi all'interno di un corpo trigger.
I vari punti di temporizzazione sono elencati di seguito:
- DOPO il livello di DICHIARAZIONE
- PRIMA del livello ROW
- DOPO RIGA livello
- PRIMA DEL livello di DICHIARAZIONE
Disabilita e abilita trigger
Possiamo abilitare e disabilitare un trigger con l'aiuto di un'istruzione DDL ALTER.
Sintassi:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Qui, trigger_n è il nome del trigger che vogliamo abilitare o disabilitare.
Ora disabilitiamo il trigger con l'aiuto della query seguente:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
L'output del codice della query:
Ora abilitiamo lo stesso trigger con l'aiuto della query seguente:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
L'output del codice della query:
Domande e risposte frequenti
D # 1) Quanti tipi di trigger esistono in PL SQL?
Risposta: Esistono due tipi di trigger in PL / SQL. Sono trigger a livello di riga e trigger a livello di istruzione.
D # 2) Quale tipo di trigger utilizza i qualificatori vecchio e nuovo?
converte l'array di caratteri in int c ++
Risposta: I qualificatori vecchio e nuovo possono essere utilizzati solo con trigger a livello di riga. Non sono compatibili con i trigger a livello di istruzione.
D # 3) Qual è la differenza tra trigger new e trigger old?
Risposta: Un nuovo trigger fornisce un elenco delle nuove versioni degli oggetti record. Un vecchio trigger fornisce un elenco delle vecchie versioni degli oggetti record.
D # 4) Che cos'è un trigger a livello di riga in PL SQL?
Risposta: Un trigger a livello di riga viene attivato per una riga solo una volta a causa di un evento. Per esempio, Se la cancellazione è considerata come un evento di attivazione per una tabella, un'istruzione di cancellazione sta interessando due righe, quindi il trigger deve essere attivato due volte.
Q # 5) Cos'è un trigger? Spiega con un esempio.
Risposta: Un trigger è una procedura memorizzata che viene attivata per impostazione predefinita se si verifica un incidente nel database. Per esempio, se una riga è inserita in una tabella o stiamo modificando alcuni valori nella tabella.
D # 6) Quali sono i trigger after?
Risposta: I trigger after vengono attivati dopo l'esecuzione di un'istruzione DML ma prima del commit nel database. È anche in grado di annullare la sua azione.
Conclusione
In questo tutorial, abbiamo discusso alcuni concetti di base dei Trigger in PL SQL che sono essenziali per usarli durante la programmazione. Abbiamo trattato i seguenti argomenti elencati di seguito:
- Trigger.
- Tipi di trigger.
- Varie operazioni sui trigger.
<< PREV Tutorial | PROSSIMO Tutorial >>