oracle: warum kann ich in die Ansicht einfügen
Habe ich eine einfache view mit den Spalten aus einer einzelnen Tabelle. Wenn ich versuche, Sie zum einfügen von Werten in die Tabelle, bekomme ich die ORA_01732 Fehler, die dml ist nicht legal, auf diese Ansicht. Ich habe auch eine order by-Klausel in der Sichtdefinition, die ich gesammelt habe ist nicht zulässig, für die es grundsätzlich updatefähig und ich sehe, dass ich wahrscheinlich verwenden, ANSTELLE VON type-Klausel in der Sichtdefinition. Kann mir jemand zeigen wie ich das aufbauen würde, die die Sicht aktualisierbar sein auf diese Weise?
hier ist die create view-Anweisung:
create view CUST_VIEW
as select customer#,firstname,lastname,state
from book_customer
order by state, lastname;
- Du müsstest post von der CREATE VIEW-Anweisung für uns, in der Lage zu beraten, wie man es aktualisiert.
ORDER BY
im Blick ist höchst bedenklich und nicht empfohlen wird. - Warum würde jemand verwenden Sie eine order by in einer Ansicht?
- seine Hausaufgabe, die mir sagt, definieren Sie die Ansicht, so dass Sie Bestellungen per Nachname innerhalb jedes Staates. aktualisierte Frage mit der create view
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sicher, dass die
order by
ist die Ursache für deine Beobachtung?Kann ich ein insert auf eine Ansicht mit einer order by-Klausel:
Den oben genannten Anweisungen laufen ohne problem auf Oracle 11 R2.
Möchten Sie vielleicht zu prüfen, mit
USER_UPDATABLE_COLUMNS
die Spalten, die Sie einfügen können, um:Haben Sie Recht, dass eine Ansicht mit der ORDER BY-Klausel ist nicht grundsätzlich updatefähig. Alles, was Sie tun müssen ist, erstellen Sie einen INSTEAD OF-trigger für die Sicht zum ausführen der EINFÜGEN, die Sie wollen.
ZB: nehmen wir an, Sie haben einen Blick ACTIVE_CUST_VIEW auf dem Tisch ALL_CUST