SQL - Insert Into View..

chris_sit

Erfahrenes Mitglied
Hallo zusammen,

bei einem Projekt an der Uni arbeiten wir derzeit mit einer IBM DB2 Datenbank. Momentan verzwifel ich aber an folgender Fehlermeldung:
Code:
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0150N  The view, typed table, materialized query table, or staging table in
the INSERT, DELETE, or UPDATE statement is a view, typed table, materialized
query table, or staging table for which the requested operation is not
permitted.  SQLSTATE=42807

Somit habe ich meine View erstellt:
Code:
db2 "CREATE VIEW Cityview (Name, Einwohner, L_ID, LT_ID) AS 
(SELECT s.Name, s.Einwohner, l.L_ID, lt.LT_ID FROM Stadt s, Land l, Landesteil lt, gehoert_LT glt 
WHERE s.Einwohner > 5000000 AND s.S_ID = glt.S_ID AND glt.LT_ID = lt.LT_ID AND lt.L_ID = l.L_ID)"

und mit diesem Query möchte ich etwas einfügen:

Code:
db2 "insert into cityview values ('test', 5555555, 5, 5)"

Ich habe gelesen, dass man Views nur manipulieren kann, wenn keine arithmetischen Operationen durchgeführt wurden - aber trifft hier nicht zu...

Für einen Tipp wäre ich sehr dankbar
-Chris
 
... man Views nur manipulieren kann, wenn keine arithmetischen Operationen durchgeführt wurden ...
und wenn diese sich (IMO) nur auf eine Tabelle beziehen und der Insert auch den Prim.Key der Tabelle enthält.
Du versuchst gleichzeitig in die Projektion aus drei Tabellen: s.,s.,l. und lt. zu schreiben und das geht so nicht.
Du musst in die einzelnen Tabellen einfügen um die Daten dann in der View wieder zu sehen.
 
Danke für den Hinweis, habe an kleineren Beispielen die Funktionsweise von Views versucht nachzuvollziehen, dies Bestätigt meine Erfahrungen.

Was mich wundert, in der Aufgabenstellung heisst es:

... Erzeugen Sie mit einer Sicht einen Ausschnitt aus der Relation Stadt... Übernehmen sie für die Sicht folgende Attribute: Name, Einwohner L_ID, LT_ID..

L_ID & LT_ID sind aber in anderen Tabellen, das könnt ich höchstens per Join zusammenfassen. Ich bezweifel aber, dass er die Werte dann schreiben kann...
 
Was mich wundert, in der Aufgabenstellung heisst es: ... Erzeugen Sie mit einer Sicht einen Ausschnitt aus der Relation Stadt... Übernehmen sie für die Sicht folgende Attribute: Name, Einwohner L_ID, LT_ID..

Die Lösung der Aufgabe wäre doch demnach schon die Sicht aus deinem ersten Post.
Da steht nicht, dass Du Daten in die Relation schreiben sollst.
 
das ist der nächste Punkt.. angebl. soll es mit 2 Sichten klapppen, werde ich später nochmal experimentieren. Danke soweit :)
 
Zurück