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

Oracle fügt automatisch einen Datensatz in den Multirecord-Block Teil 2 ein

DUPLICATE_RECORD ist ein eingeschränktes Verfahren und Sie können es nicht in WHEN-VALIDATE-RECORD verwenden Auslöser (oder irgendein anderer der gleichen Art).

Da Sie zum nächsten Datensatz navigieren müssen (wenn Sie ihn kopieren möchten), auch wenn Sie dieses eingeschränkte Verfahren verwenden in eine andere PL/SQL-Programmeinheit wird alles nur propagiert und - letztendlich - den gleichen Fehler auslösen. Also ... du hast Pech gehabt.

Selbst wenn Sie eine (gespeicherte) Prozedur schreiben würden, die diese "Jr"-Zeile irgendwo hinter den Kulissen in die Datenbank einfügen würde, müssten Sie diese Werte auf den Bildschirm bringen. Als EXECUTE_QUERY ist der Weg, es zu tun, und da es (noch ein weiteres) eingeschränktes Verfahren ist, wird das auch nicht funktionieren.

Wenn Sie vorhatten, den Datenblock zu löschen und manuell zu füllen (mithilfe einer Schleife), müssten Sie mit NEXT_RECORD zum nächsten (und nächsten und nächsten) Datensatz navigieren , und das ist wieder ein nichtoffenes Verfahren. Außerdem, wenn es ein Datenblock wäre (und ja, das ist es), würden Sie tatsächlich Duplikate erstellen für alle Datensätze, sobald Sie die Änderungen speichern würden - entweder würde es mit einer eindeutigen Einschränkungsverletzung fehlschlagen (was gut ist), oder Sie würden Duplikate erstellen (was schlimmer ist).

Übrigens, was ist falsch an WHEN-NEW-RECORD-INSTANCE ? Welche Probleme haben Sie bei der Verwendung?