Składnia określona przez Microsoft dla upuszczania części kolumny instrukcji ALTER jest następująca
DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
Zauważ, że [, ... n] pojawia się zarówno po nazwie kolumny, jak i na końcu całej klauzuli upuszczania. Oznacza to, że istnieją dwa sposoby usunięcia wielu kolumn. Możesz to zrobić:
ALTER TABLE TableName
DROP COLUMN Column1, Column2, Column3
albo to
ALTER TABLE TableName
DROP
COLUMN Column1,
COLUMN Column2,
COLUMN Column3
Ta druga składnia jest przydatna, jeśli chcesz połączyć upuszczenie kolumny z usunięciem ograniczenia:
ALTER TBALE TableName
DROP
CONSTRAINT DF_TableName_Column1,
COLUMN Column1;
Podczas upuszczania kolumn program SQL Sever nie odzyskuje miejsca zajmowanego przez upuszczone kolumny. W przypadku typów danych przechowywanych w wierszach (na przykład int) może nawet zająć miejsce w nowych wierszach dodanych po instrukcji alter. Aby obejść ten problem, należy utworzyć indeks klastrowany w tabeli lub przebudować indeks klastrowany, jeśli już go ma. Odbudowywanie indeksu można wykonać za pomocą polecenia REBUILD po zmodyfikowaniu tabeli. Ale ostrzegam, że to może być powolne na bardzo dużych stołach. Na przykład:
ALTER TABLE Test
REBUILD;