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