Nej, det kan du inte. :new
och :old
är pseudo-poster, inte faktiska poster som du kan tilldela en lokal variabel. Om dina tabeller var baserade på objekttyper, :new
och :old
skulle då vara faktiska instanser av den speciella objekttypen som kan skickas runt som vilket annat objekt som helst. Men det är ganska osannolikt att det är värt att definiera dina tabeller i termer av objekt bara för att göra dina triggers lättare att skriva.
Du kan naturligtvis skriva ett PL/SQL-paket som automatiskt genererar triggerkoden du vill ha genom att göra saker som att fråga datalexikonet (dvs. all_tab_columns
för att få listan över kolumner i en tabell) och med dynamisk SQL. Beroende på antalet triggers du förväntar dig att behöva skriva, kan detta vara lättare än att skriva och underhålla massor av liknande kod.