wer kann mir zu Views was erklären??
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 14 Jahre, 1 Monat von
Anonym.
-
AuthorPosts
-
17. August 2009 um 8:44 Uhr #4044
AnonymInaktivHi@all,
wir arbeiten schon immer mit unserem View-Konzept; jeder Tabelle hat eine 1:1-View und nur mit dieser wird in Anwendungsprogrammen gearbeitet.
Ich habe eben ein Tabellenfeld per A lter Table A lter Col vergrössert; Reorg wg. AREO*; Rebind Package und gut ist …
Ein S ELECT auf die View bringt mir das lange Feld.Unsere 1:1-View wird mit S ELECT * FROM erstellt. Warum kennt die View dann nicht ein Feld, was nachträglich an die Tabelle gehängt wird? Steht zwar so auch im Denne drin (winkewinke@Uli) … Aber warum ist das so und wie realisiert das das DB2?
Danke&Grüsse
Alexander
17. August 2009 um 9:53 Uhr #4210
AnonymInaktiv*zurückwink*
Tja, warum sich DB2 so verhält, wissen wohl nur die Entwickler von IBM selbst.
Vermutlich haben unterschiedliche Teams diese beiden Features programmiert und hatten unterschiedliche Vorstellungen von den cascading Effekten eines ALTERs.
Ich könnte mir allerdings folgendes vorstellen:
Ursprünglich wurde ja immer die Unabhängigkeit von Zugriffs- und Speicherschicht propagiert. ( Das war ja wohl auch der Grund für Eure 1:1 Views ). Änderungen bei der Tabelle sollten sich ja gerade nicht in den Views niederschlagen. Und "S ELECT *" war ja nur eine Kurzschreibweise für "S ELECT alle-Spalten". Die Viewdefinition war demnach S ELECT spalte,spalte,spalte … FROM … und sollte von nachträglichen Änderungen der Tabellendefinition nicht berührt werden. Also keine automatische Aufnahme neuer Spalten.
Bei der Verlängerung einer Spalte sieht die Sache anders aus.
S ELECT spalte FROM view würde danach nicht mehr die komplette Spalte einlesen, wenn diese nur sich in der Tabelle vergrössert hat. Demnach müsste sich die Viewdefinition aber ändern zu S ELECT S UBSTR(spalte,1,alteLänge) AS spalte. Und diese View wäre ggf nicht mehr Updateable. Deshalb wurde hier die Spaltenänderung mit in die View übernommen.17. August 2009 um 11:38 Uhr #4336
AnonymInaktivHi Uli,
prinzipiell richtig. Aber dann hat DB2 irgendwo Katalog-Tabellen, die uns verschwiegen werden, oder DB2 interpretiert das Feld Text in der SYSviews … Wenn da ein Stern drin ist, dann nimm alle Felder, die in der SYScolumns drin sind und deren Created-TS vor dem Altered-TS der View in der SYStables ist …
Merkwürdig finde ich das schon…
Habe übrigens gerade festgestellt, dass es in der SYStables bei Views Unterschiede im Cr-TS und Altered-TS gibt; ist mir auch noch nicht aufgefallen (durch das AlterTable verursacht). Wobei die View auf die Tabelle mit dem AlterCol den gleichen AlteredTS hat wie die Tabelle. Dieser Vorgang wird offensichtlich auf die abhängigen Views "durchgezogen".
Thx4Reply!
Grüsse
AlexanderPS: was ist das denn für eine *grml*-Meldung:
– It appears that you are trying to write using ALL CAPS.
  Please be aware this is against forum rules.
17. August 2009 um 11:52 Uhr #4424
AnonymInaktivKeine versteckte Tabelle. 🙂
Die Spalten einer View stehen ganz normal in der Sysibm.Syscolumns.
-
AuthorPosts
You must be logged in to reply to this topic.