2010-09-05 11 views
9

Qualcuno può spiegare la differenza tra trigger "prima" e "dopo" in Oracle 10g con un esempio?differenza prima e dopo il trigger in Oracle

+0

Non ero ancora sicuro di cosa stavi cercando in termini di semplicità, quindi ho cancellato la mia risposta. Qualcun altro potrebbe avere una buona idea. –

+0

Per ogni piccolo dubbio sto postando una domanda nello stack overflow senza pensare .....(penso che non dovrei fare) .... Ho capito il concetto di trigger ora.Dunque avanti penserò prima di postare la domanda ... – Jagan

risposta

22

In primo luogo, inizierò la mia risposta definendo grilletto: un grilletto è una stored procedure che viene eseguito quando si aggiunge una riga, modificato o cancellato.

trigger possono eseguire PRIMA è preso l'azione o DOPO viene eseguita l'azione.

BEFORE I trigger vengono solitamente utilizzati quando è necessario eseguire la convalida prima di accettare la modifica. Corrono prima che venga apportata una modifica al database. Supponiamo che tu esegua un database per una banca. Hai un tavolo accounts e un tavolo transactions. Se un utente effettua un prelievo dal suo account, vorrai assicurarti che l'utente abbia abbastanza crediti nel suo account per il suo prelievo. Il trigger BEFORE consentirà di farlo e impedirà l'inserimento della riga in transactions se il saldo in accounts non è sufficiente.

AFTER I trigger vengono solitamente utilizzati quando le informazioni devono essere aggiornate in una tabella separata a causa di una modifica. Corrono dopo che le modifiche sono state apportate al database (non necessariamente impegnate). Torniamo al nostro esempio precedente. Dopo una transazione riuscita, è necessario aggiornare balance nella tabella accounts. Un trigger AFTER ti consentirà di fare esattamente questo.

+1

+1 Vorrei solo aggiungere che alcune validazioni di trigger devono essere eseguite in DOPO la riga trigger, perché è solo nei trigger AFTER che i valori delle colonne sono "fissi". In un trigger BEFORE è possibile convalidare e passare alcune regole complesse in base al valore di: NEW.col solo per il valore di: NEW.col da modificare in seguito nel trigger in modo che la regola venga ora violata. –

6

Non sono completamente sicuro di cosa ti interessa sapere, quindi terrò questo fondamentale.

Prima Trigger

  • Come per il nome, questi trigger vengono lanciati prima di creare la riga della tabella. Successivamente, poiché la riga non è stata ancora creata, hai pieno accesso al campo: new.table_element. Ciò consente la pulizia e l'uniformità dei dati se si tenta di inserire/aggiornare dati indesiderati/non corretti. Questo è solo un esempio di base, ma è necessario utilizzare il trigger precedente ogni volta che è necessario accedere ai dati ": new".

Dopo Trigger

  • Dal momento che i successivi trigger viene attivato una volta che la fila è già stato creato, questi trigger sono in genere utilizzati quando si vuole la logica che si verifichi a causa della fila. Ad esempio, se si dispone di una tabella degli indirizzi e un utente aggiorna il proprio indirizzo, è possibile aggiornare gli ID di riferimento degli indirizzi in una tabella xrif al momento della creazione (se si conservano anche tutti gli indirizzi precedenti). Inoltre, a differenza del trigger precedente, non si ha accesso a modificare nessuno dei valori della colonna poiché la riga esiste già nella tabella.
1

PRIMA TRIGGER vengono utilizzati quando l'azione di attivazione deve determinare se le istruzioni di attivazione devono essere consentite o meno. Utilizzando BEFORE TRIGGERS l'utente può eliminare l'elaborazione non necessaria dell'istruzione di attivazione ma, DOPO I TRIGGERATORI vengono utilizzati quando le istruzioni di attivazione dovrebbe essere completato prima di eseguire l'azione di attivazione.

+0

Si prega di modificare la risposta esistente, piuttosto che duplicare un altro. – wonea

Problemi correlati