# Derby Dezimal-Spalte die Größe ändern



## Localtime (8. Dez 2009)

Hi,

irgendwie habe ich heute ein Brett vor dem Kopf oder das funktioniert wirklich nicht ...

Datenbank: Derby

vorhandener Spalten-Typ: DECIMAL(5,2)
soll geändert werden in: DECIMAL(10,2)

Habe es so versucht: ALTER TABLE tbName ALTER colName SET DATA TYPE DECIMAL(10,2)

Fehler-Meldung:
Error: Only columns of type VARCHAR may have their length altered. 
SQLState:  42Z16

Ist es wirklich nicht möglich die Größe einer DECIMAL-Spalte nachträglich zu verändern?

Was mir sonst noch so einfällt: DB kopieren, Spalte löschen, neue Spalte erstellen und Daten aus der Kopie wieder einspielen


Danke für Eure Mühe.


----------



## Ebenius (8. Dez 2009)

Localtime hat gesagt.:


> Ist es wirklich nicht möglich die Größe einer DECIMAL-Spalte nachträglich zu verändern?


Naja, sowas ist immer ein Sonderfall. Es verändern sich ja Werte dabei; trivial ist das also nicht.



Localtime hat gesagt.:


> Was mir sonst noch so einfällt: DB kopieren, Spalte löschen, neue Spalte erstellen und Daten aus der Kopie wieder einspielen


 Ich würde's so machen: 
	
	
	
	





```
ALTER TABLE hububu ADD ( tmp DECIMAL(10, 2) );
UPDATE hububu SET tmp = colName;
ALTER TABLE hububu DROP ( colName );
ALTER TABLE hububu ADD ( colName DECIMAL(10, 2) );
UPDATE hububu SET colName = tmp;
ALTER TABLE hububu DROP ( tmp );
COMMIT;
```

Ebenius


----------



## Localtime (8. Dez 2009)

Hi Ebenius,

hab's so gemacht, wie Du beschrieben hast.

Hatte auch die Idee mit der temporären Tabelle, aber wieder vergessen  ;^)


Danke


----------

