Zitat von
Bart Simpson:
Heisst Das dass ich _alle_ Views (die auf die Tabelle zugreifen) aktualisieren muss, wenn ich eine Tabelle verändere??? Auch wenn's die View(s) gar nicht betrifft, weil ich z.B. nur weitere Felder hinzugefügt habe?
Nein, nur die abhängigen Tabellen sind betroffen.
CREATE VIEW xyView AS SELECT TabelleA.*, TabelleB.cxdf FROM TabelleA INNER JOIN TabelleB ON ....
Bei Änderungen an TabelleA muss die View auf jeden Fall refreshed werden.
TabelleB ist weniger kritisch, da nur ein Feld entnommen wird.
Die View wird sozusagen intern compiliert und als Objektcode gespeichert.
Und wenn dann der
* in der Feldliste auftaucht wirds kritisch.
Zitat von
Bart Simpson:
Trotzdem, vielen Dank für den Hinweis. Nur noch eine Frage: Ist das eine persönliche "Entdeckung" oder gibt's das auch irgendwo nachzulesen? Z.B. in der Online Hilfe zum
SQL Server?
Na ja, aber sehr versteckt:
Hinweise (Topic CREATE VIEW)
Wenn eine Sicht von einer Tabelle (oder Sicht) abhängt, die gelöscht wurde, erzeugt SQL Server eine Fehlermeldung, falls jemand versucht, die Sicht zu verwenden. Wenn eine neue Tabelle (oder Sicht), deren Struktur sich nicht von der vorherigen Basistabelle unterscheidet, erstellt wird, um die gelöschte zu ersetzen, wird die Sicht wieder verwendbar. Wenn sich die Struktur der neuen Tabelle (oder Sicht) ändert, muss die Sicht gelöscht und neu erstellt werden.