Wertebereich eines Attributs ändern, das in Views verwendet wird

Hallo,

in einer Tabelle möchte ich den Wertebereich eines Attributs von Numeric(4,1) auf Numeric ändern. Das wollte ich mittels des Befehls

ALTER TABLE berechnungen ALTER COLUMN wert1 type NUMERIC;

durchführen.
Leider greifen mehrere Views auf dieses Attribut zu und ich erhalte eine entsprechende Fehlermeldung.
Die Views sind wie folgt aufgebaut

CREATE VIEW dummy AS 
SELECT round(t1.wert1::numeric /
    sum(t1.wert2), 2) AS ergebnis
FROM berechnungen t1
WHERE ... ;

Die entsprechende Fehlermeldung lautet dann:

ERROR:  cannot alter type of a column used by a view or rule
DETAIL: rule _RETURN on view dummy depends on column wert1

Da es sich diesem Fall nach meinem Verständnis nicht um eine Änderung des Datentyps sondern nur der Genauigkeit handelt, habe ich die Hoffnung das es einen besseren Weg gibt, als alle Views neu anzulegen.

Da ich neu im Forum bin, noch ein paar Angaben: Seit ca. 2 Jahren beschäftige ich mich beruflich mit Datenbanken und insbesondere Postgres 8.2 unter Windows.
Es würde mich freuen, wenn mir geholfen würde und ich auch ab und an zu Lösungen beitragen kann.

Gruß,
Christian

Das wird wohl nichts.

Ich werde dir jetzt nicht empfehlen, dich mal in den Systemtabellen umzuschauen. Das könnte zum Erfolg führen, aber du könntest im Gegenzug auch die ganze DB kaputt machen.


Es würde mich freuen, wenn mir geholfen würde und ich auch ab und an zu Lösungen beitragen kann.

Neue Schreiberlinge sind hier immer gern gesehen :wink:

Vielen Dank für den Aussage und die “Nicht-Empfehlung”.

In pg_attribute ließe sich der Wertebereich vermutlich durch das Setzten von atttypmod auf -1 entsprechend anpassen. Da ich aber nicht abschätzen kann, welche Folgen das hat, und es mir auch nicht wie eine “saubere” Lösung erscheint, werde ich die Views dann wohl neu anlegen müssen.

Gruß

du koenntest natuerlich einen SQL dump (plain) erzeugen, dann den typ im modell (dump-file) aendern - und wieder restoren.