Trigger vs Cursors
In un database, un trigger è una procedura (segmento di codice) che viene eseguita automaticamente quando si verificano determinati eventi in una tabella / vista. Tra i suoi altri usi, i trigger sono principalmente utilizzati per mantenere l'integrità in un database. Un cursore è una struttura di controllo utilizzata nei database per passare attraverso i record del database. È molto simile all'iteratore fornito da molti linguaggi di programmazione.
Cosa sono i trigger?
Un trigger è una procedura (segmento di codice) che viene eseguita automaticamente quando si verificano determinati eventi in una tabella / vista di un database. Tra i suoi altri usi, i trigger sono principalmente utilizzati per mantenere l'integrità in un database. I trigger vengono anche utilizzati per applicare le regole aziendali, controllare i cambiamenti nel database e replicare i dati. I trigger più comuni sono i trigger DML (Data Manipulation Language) attivati quando i dati vengono manipolati. Alcuni sistemi di database supportano trigger non dati, che vengono attivati quando si verificano eventi DDL (Data Definition Language). Alcuni esempi sono i trigger che vengono generati quando vengono create le tabelle, durante le operazioni di commit o di rollback, ecc. Questi trigger possono essere utilizzati in particolare per il controllo. Il sistema di database Oracle supporta i trigger a livello di schema (ovvero i trigger attivati quando gli schemi di database vengono modificati) come After Creation, Before Alter, After Alter, Before Drop, After Drop, ecc. I quattro principali tipi di trigger supportati da Oracle sono trigger a livello di riga, Trigger a livello di colonna, trigger di ogni tipo di riga e trigger di ogni tipo di istruzione.
Cosa sono i cursori?
Un cursore è una struttura di controllo utilizzata nei database per passare attraverso i record del database. È molto simile all'iteratore fornito da molti linguaggi di programmazione. Oltre a attraversare i record in un database, i cursori facilitano anche il recupero dei dati, l'aggiunta e l'eliminazione di record. Definendo il modo corretto, i cursori possono anche essere utilizzati per attraversare all'indietro. Quando una query SQL restituisce un insieme di righe, queste vengono effettivamente elaborate utilizzando i cursori. Un cursore deve essere dichiarato e assegnato un nome, prima che possa essere utilizzato. Quindi il cursore deve essere aperto usando il comando OPEN. Questa operazione posiziona il cursore immediatamente prima della prima riga del set di risultati dei record. Quindi il cursore deve eseguire l'operazione FETCH per ottenere effettivamente una riga di dati nell'applicazione. Infine, il cursore deve essere chiuso usando l'operazione CLOSE. I cursori chiusi possono essere nuovamente aperti.
Qual è la differenza tra trigger e cursori?
Un trigger è una procedura (segmento di codice) che viene eseguita automaticamente quando si verificano determinati eventi in una tabella / vista di un database, mentre un cursore è una struttura di controllo utilizzata nei database per passare attraverso i record del database. Un cursore può essere dichiarato e utilizzato all'interno di un trigger. In una situazione del genere, la dichiarazione dichiarata si trova all'interno del trigger. Quindi l'ambito del cursore sarebbe limitato a quel trigger. All'interno di un trigger, se un cursore viene dichiarato su una tabella inserita o cancellata, tale cursore non sarebbe accessibile da un trigger annidato. Una volta completato il trigger, tutti i cursori creati all'interno del trigger verranno deselezionati.