Příkaz, který hledáte, je:
alter table tblName drop column columnName
kde tblName
je název tabulky a columnName
je název sloupce, ale je tu několik věcí, které možná budete muset udělat jako první.
- Pokud ke sloupci existují nějaké odkazy na cizí klíč, budete se jich muset nejprve zbavit.
- Pokud existuje index využívající tento sloupec, budete se ho muset buď zbavit, nebo jej upravit tak, aby tento sloupec nepoužíval.
Mějte na paměti, že výkon tohoto příkazu nemusí být nutně dobrý. Jednou z možností je počkat na dobu odstávky, kdy si můžete být jisti, že k databázi nikdo nebude přistupovat, přejmenovat aktuální tabulku a poté použít create table
a insert into ... select from
pro přenos sloupců, které nechcete smazat.
Jedna z pozdějších verzí Oracle má ve skutečnosti měkké odstranění, které může pouze označit sloupec jako nepoužitý, aniž by bylo fyzicky odstraněno. Má to stejný účinek, protože na něj již nelze odkazovat a je zde příkaz ve smyslu alter table ... drop unused columns
který má být spuštěn v tichém čase, který dělá těžkou práci ve skutečném fyzickém odstranění.
To má tu výhodu, že sloupce okamžitě „zmizí“, aniž by došlo ke snížení výkonu databáze během rušných časů.