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

In un trigger Oracle, posso assegnare nuovo e vecchio a una variabile di tipo riga?

No, non puoi. :new e :old sono pseudo-record, non record effettivi che puoi assegnare a una variabile locale. Se le tue tabelle erano basate su tipi di oggetti, :new e :old sarebbero quindi istanze effettive del particolare tipo di oggetto che possono essere passate come qualsiasi altro oggetto. Ma è piuttosto improbabile che valga la pena definire le tue tabelle in termini di oggetti solo per rendere più facile scrivere i tuoi trigger.

Ovviamente potresti scrivere un pacchetto PL/SQL che generi automaticamente il codice di attivazione desiderato eseguendo operazioni come interrogare il dizionario dei dati (ad esempio all_tab_columns per ottenere l'elenco delle colonne in una tabella) e utilizzando SQL dinamico. A seconda del numero di trigger che prevedi di dover scrivere, potrebbe essere più semplice che scrivere e mantenere una tonnellata di codice simile.