Dropping_a_column

Oracle 8i voegt een nieuwe feature toe om kolommen in een tabel te verwijderen. De eerste stelt je in staat om een kolom als ‘unused' te markeren en de tweede om de kolom die als ‘unused' is gemarkeerd te verwijderen teneinde meer vrije ruimte te creëren.

Markeren van een kolom in een tabel als Unused

Kolommen in een tabel kunnen als unused gemarkeerd worden. Unused kolommen worden behandeld als waren ze verwijderd, zelfs als hun kolom data nog in de tabelrijen achterblijven. Deze feature kan handig zijn als je de kolom niet wil verwijderen tijdens piekuren en je de kolom wil verwijderen voor dagelijks toegang.

Alter table dbatest set unused ( c3 );
Alter table dbatest set unused (c1, c4);

Totdat je de kolom daadwerkelijk verwijderd, worden de kolommen meegeteld voor de Totale Kolom Limiet (1000) in Oracle 8.1 en ook als je een ‘long’ kolom hebt gemarkeerd als ‘unused’, kan je niet nog een ‘long’ kolom toevoegen aan de tabel totdat de oude is verwijderd. De dictionary views dba_unused_col_tabs en user_unused_col_tabs kan worden gebruikt om de kolommen die momenteel gemarkeerd zijn als unused te achterhalen.

Verwijderen van een kolom of een ‘unused’ kolom van een tabel.

Deze feature verwijderd de kolom van een tabel en geeft de ruimte vrij aan het segment. Wanneer je de drop column clause gebruikt, zal het ook alle kolommen die gemarkeerd stonden als unused verwijderen. Ook alle indexes, constraints en statistieken die op deze kolom(men) stonden zullen worden verwijderd.


Alter table dbatest drop column ( c9 );
Alter table dbatest drop unused columns;


Als je nog een stap verder gaat en alle kolommen wilt verwijderen zal Oracle met de volgende melding komen:
ORA-12983-Cannot drop all columns in a table.

Beperkingen

  • Je kunt de commando’s drop en set unused niet in 1 statement combineren.
  • Ook kan geen kolom van een object type tabel, nested table, partitioning key kolom of een parent key kolom verwijderd worden.
  • Een andere goede beperking is dat er geen kolom van een sys tabel verwijderd kan worden.
 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 297 gasten online