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

Kan jeg i en Oracle-trigger tildele ny og gammel til en rækketypevariabel?

Nej, det kan du ikke. :new og :old er pseudo-poster, ikke faktiske poster, som du kan tildele til en lokal variabel. Hvis dine tabeller var baseret på objekttyper, :new og :old ville så være faktiske forekomster af den bestemte objekttype, der kan sendes rundt som ethvert andet objekt. Men det er temmelig usandsynligt, at det er værd at definere dine tabeller i form af objekter bare for at gøre dine triggere nemmere at skrive.

Du kan selvfølgelig skrive en PL/SQL-pakke, der automatisk genererer den triggerkode, du ønsker, ved at gøre ting som at forespørge i dataordbogen (dvs. all_tab_columns for at få listen over kolonner i en tabel) og ved hjælp af dynamisk SQL. Afhængigt af antallet af triggere, du forventer at skulle skrive, kan dette være nemmere end at skrive og vedligeholde et væld af lignende kode.



  1. Sådan forbinder du to tabeller ved hjælp af en kommasepareret liste i sammenføjningsfeltet

  2. rs.last() giver ugyldig operation for kun at videresende resultatersæt:sidste

  3. SQL:Vælg poster, hvor ALLE sammenføjede poster opfylder en betingelse

  4. Skift størrelse på tabel-/kolonne-/indeksnavne i oracle 11g eller 12c