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.