Sonntag, November 24, 2013

Unsichtbare Spalten

Richard Foote erläutert in seinem Blog die grundlegenden Eigenschaften von invisible columns und weist dabei insbesondere auf einen interessanten Nebeneffekt hin: durch die Änderung der Sichtbarkeit kann man die Reihenfolge der Spalten in der Anzeige ändern. Dazu ein Beispiel:

drop table t;

create table t (
    a number
  , b number 
  , c number
);

insert into t(a, b, c) values (1, 2, 3);

select * 
  from t;

         A          B          C
---------- ---------- ----------
         1          2          3

alter table t modify a invisible;

select * 
  from t;

         B          C
---------- ----------
         2          3

alter table t modify a visible;

select * 
  from t;

         B          C          A
---------- ---------- ----------
         2          3          1

Die Spalte A erscheint nach der erneuten Setzung auf VISIBLE an letzter Stelle. Ein Blick auf die Informationen im data dictionary liefert die zugehörigen Metadaten:

select column_name
     , segment_column_id 
     , column_id
  from dba_tab_cols
 where table_name = 'T'
 order by segment_column_id;

COLUMN_NAME      SEGMENT_COLUMN_ID  COLUMN_ID
---------------- ----------------- ----------
A                                1          3
B                                2          1
C                                3          2

Während sich an der Ablage im Block (natürlich) nichts ändert (also an der segment_column_id), ergibt sich eine veränderte Reihenfolge in der Darstellung (column_id). In manchen Situationen könnte diese Möglichkeit recht nützlich sein.

Keine Kommentare:

Kommentar veröffentlichen