ALTER TABLE MODIFY COLUMN - Datentypänderung bei großen Tabellen mit virtueller Spalte

Typänderungen bei großen Tabellen können ein Problem sein.

Wenn alter table modify column nicht geht oder zu lange dauert (aus diversen Gründen), kann eine (von mehreren) Alternativen sein, mit virtuellen Spalten zu arbeiten.

Bsp.
Helden der Datenmodellierung haben die Spalte Postleitzahl als number(5) definiert.
(logisch, ist ja eine Zahl; blöd nur dass ganz Sachsen führende 0er in der PLZ haben)

alter table modify column würde aus 1187 aber auch kein 01187 für Dresden machen. Dazu bräuchte es noch ein Update, was ggfs. richtig aufwändig wird.


Alternative mit virtueller Spalte:

A) Umbenennen der bestehenden Spalte:
ALTER TABLE tbl RENAME COLUMN ANSCHRIFT_PLZ TO ANSCHRIFT_PLZ_N;

B) Neue, virtuelle Spalte anlegen:
ALTER TABLE tbl ADD ANSCHRIFT_PLZ VARCHAR2(5 char) GENERATED ALWAYS AS (LPAD(ANSCHRIFT_PLZ_N,5,'0')) VIRTUAL

Fall es Probleme beim umbenennen der bestehenden Spalte gibt, ggfs hier nachschauen:
https://frankschmidt.blogspot.com/2018/10/hidden-columns-entdecken-ora-54032.html

Vorteil: einfach und schnell
Nachteil: ausländische PLZs, die ggfs. 4stellig sind, können so NICHT abgebildet werden.


Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen