Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Kann ich in einem Oracle-Trigger einer Rowtype-Variable neu und alt zuweisen?

Nein, das kannst du nicht. :new und :old sind Pseudodatensätze, keine tatsächlichen Datensätze, die Sie einer lokalen Variablen zuweisen können. Wenn Ihre Tabellen auf Objekttypen basieren, :new und :old wären dann tatsächliche Instanzen des bestimmten Objekttyps, die wie jedes andere Objekt herumgereicht werden können. Aber es ist ziemlich unwahrscheinlich, dass es sich lohnt, Ihre Tabellen in Form von Objekten zu definieren, nur um das Schreiben Ihrer Trigger zu vereinfachen.

Sie könnten natürlich ein PL/SQL-Paket schreiben, das automatisch den gewünschten Triggercode generiert, indem Sie beispielsweise das Datenwörterbuch abfragen (d. h. all_tab_columns um die Liste der Spalten in einer Tabelle zu erhalten) und mit dynamischem SQL. Abhängig von der Anzahl der Trigger, die Sie voraussichtlich schreiben müssen, kann dies einfacher sein, als eine Menge ähnlichen Codes zu schreiben und zu verwalten.