Co się dzieje gdy usuwasz tabelę? Drop table.

10-sty-2012

Podczas usuwania tabeli usuwane są również jej indeksy (bo po co indeksy gdy nie ma tabeli), constrainy (bo czego pilnować jak nie ma tabeli), triggery, uprawnienia.

Za to nie są usuwane procedury lub funkcje, które korzystają z tej tabeli. A to dzięki opóźnionemu rozwiązywaniu nazw w procedurach.

A co gdyby chcieć usunąć tylko jedną kolumnę, która jest wykorzystywana w checku? Zobacz:

CREATE TABLE tab
(Id INT,
 x INT,
y INT,
CONSTRAINT check_x_y CHECK (x<y))

ALTER TABLE tab DROP COLUMN x

Dostaniesz błąd:

Msg 5074, Level 16, State 1, Line 2
The object 'check_x_y’ is dependent on column 'x’.
Msg 4922, Level 16, State 9, Line 2
ALTER TABLE DROP COLUMN x failed because one or more objects access this column.

 Musisz najpierw usunąć CHECK, a dopiero potem kolumnę:

ALTER TABLE tab DROP CONSTRAINT check_x_y
ALTER TABLE tab DROP COLUMN x

Komentarze są wyłączone

Autor: Rafał Kraik