sql >> Database >  >> RDS >> Oracle

Kan ik in een Oracle-trigger nieuw en oud toewijzen aan een rowtype-variabele?

Nee, dat kan niet. :new en :old zijn pseudo-records, geen echte records die u aan een lokale variabele kunt toewijzen. Als uw tabellen waren gebaseerd op objecttypen, :new en :old zouden dan feitelijke instanties zijn van het specifieke objecttype die kunnen worden doorgegeven zoals elk ander object. Maar het is vrij onwaarschijnlijk dat het de moeite waard is om uw tabellen in termen van objecten te definiëren, alleen maar om uw triggers gemakkelijker te schrijven te maken.

Je zou natuurlijk een PL/SQL-pakket kunnen schrijven dat automatisch de gewenste triggercode genereert door dingen te doen als het datadictionary te doorzoeken (d.w.z. all_tab_columns om de lijst met kolommen in een tabel te krijgen) en met dynamische SQL. Afhankelijk van het aantal triggers dat u verwacht te moeten schrijven, kan dit gemakkelijker zijn dan het schrijven en onderhouden van een heleboel vergelijkbare code.



  1. Een tabel maken in MySQL Workbench met behulp van de GUI

  2. Knoopvolgorde zoeken in XML-document in SQL Server

  3. Datum- en tijdgegevens Bucketiseren

  4. mysqli_stmt::bind_result():Het aantal bindvariabelen komt niet overeen met het aantal velden in de voorbereide instructie