Jak usunąć kolumnę z istniejącej tabeli?
Mam stolik MEN
z Fname
iLname
Muszę usunąć Lname
Jak to zrobić?
sql-server
Gali
źródło
źródło
Odpowiedzi:
źródło
Rodzajowy:
W Twoim przypadku:
źródło
Twój przykład jest prosty i nie wymaga żadnych dodatkowych zmian w tabeli, ale ogólnie rzecz biorąc, nie jest to takie trywialne.
Jeśli do tej kolumny odwołują się inne tabele, musisz dowiedzieć się, co zrobić z innymi tabelami / kolumnami. Jedną z opcji jest usunięcie kluczy obcych i zachowanie odnośników w innych tabelach.
Inną opcją jest znalezienie wszystkich odnośników i usunięcie ich, jeśli nie są już potrzebne.
W takich przypadkach prawdziwym wyzwaniem jest znalezienie wszystkich kluczy obcych. Możesz to zrobić, sprawdzając tabele systemowe lub korzystając z narzędzi innych firm, takich jak ApexSQL Search (bezpłatny) lub Red Gate Dependency tracker (premium, ale więcej funkcji). Cały klucz na temat kluczy obcych jest tutaj
źródło
Oto poprawna odpowiedź:
Ale ... jeśli
CONSTRAINT
istnieje naCOLUMN
, to musi pierwszy, wtedy będzie mógł . Aby upuścić a , uruchom:DROP
CONSTRAINT
DROP
COLUMN
CONSTRAINT
źródło
constraint
na kolumnie ?W SQL Server 2016 można używać nowych instrukcji DIE.
Powyższe zapytanie można ponownie
drops
uruchomić w kolumnie tylko wtedy, gdy jestexists
w tabeli inaczej nie wyrzuci błędu.Zamiast używać dużych
IF
opakowań do sprawdzania istnieniacolumn
przed upuszczeniem, możesz po prostu uruchomić powyższąDDL
instrukcjęźródło
Pytanie brzmi: czy możesz usunąć tylko kolumnę z nieistniejącej tabeli ;-)
źródło
Prostą odpowiedzią na to jest użycie tego:
Można podać więcej niż jedną kolumnę w następujący sposób:
Z SQL Server 2016 można również upuścić kolumnę tylko wtedy, gdy istnieje. Zapobiega to pojawianiu się błędu, gdy kolumna nie istnieje, co prawdopodobnie nie ma znaczenia.
Istnieje kilka warunków wstępnych upuszczania kolumn. Upuszczone kolumny nie mogą być:
Jeśli którakolwiek z powyższych sytuacji jest prawdziwa, najpierw musisz porzucić te skojarzenia.
Należy również zauważyć, że upuszczenie kolumny nie powoduje odzyskania miejsca z dysku twardego, dopóki indeks klastrowy tabeli nie zostanie odbudowany. W związku z tym często dobrym pomysłem jest przestrzeganie powyższego polecenia za pomocą polecenia odbudowania tabeli:
Wreszcie, jak niektórzy powiedzieli, może to być powolne i prawdopodobnie zablokuje tabelę na czas trwania. Możliwe jest utworzenie nowej tabeli o pożądanej strukturze, a następnie zmiana nazwy w następujący sposób:
Ale ostrzegamy, że istnieje okno utraty danych wstawionych wierszy między pierwszym poleceniem select a ostatnią zmianą nazwy.
źródło
Aby dodać kolumny do istniejącej tabeli:
Aby usunąć kolumny z istniejącej tabeli:
źródło
Można to również zrobić za pomocą graficznego interfejsu użytkownika SSMS. Zaletą tej metody jest to, że ostrzega, jeśli istnieją jakieś relacje w tej kolumnie, a także może automatycznie je usunąć.
Jak powiedziałem wcześniej, jeśli istnieją jakieś relacje, które również powinny zostać usunięte, w tym momencie zapyta Cię, czy chcesz je również usunąć. Prawdopodobnie będziesz musiał to zrobić, aby usunąć kolumnę.
źródło
Jeśli używasz C #, a kolumna Tożsamość to int, utwórz nową instancję int bez podawania żadnej wartości. To zadziałało dla mnie.
źródło
Składnia:
Na przykład:
źródło