# SQL - Insert Into View..



## chris_sit (6. November 2004)

Hallo zusammen,

bei einem Projekt an der Uni arbeiten wir derzeit mit einer IBM DB2 Datenbank. Momentan verzwifel ich aber an folgender Fehlermeldung:

```
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: 

```
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:


```
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


----------



## mschuetzda (6. November 2004)

> ... 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.


----------



## chris_sit (6. November 2004)

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...


----------



## mschuetzda (6. November 2004)

> 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.


----------



## chris_sit (7. November 2004)

das ist der nächste Punkt.. angebl. soll es mit 2 Sichten klapppen, werde ich später nochmal experimentieren. Danke soweit


----------

