Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Löschen von Spalten in MS SQL Server

Der gesuchte Befehl lautet:

alter table tblName drop column columnName

wobei tblName ist der Name der Tabelle und columnName ist der Name der Spalte, aber es gibt ein paar Dinge, die Sie möglicherweise zuerst tun müssen.

  • Falls Fremdschlüsselverweise auf die Spalte vorhanden sind, müssen Sie diese zuerst entfernen.
  • Wenn es einen Index gibt, der diese Spalte verwendet, müssen Sie ihn entweder entfernen oder so anpassen, dass er diese Spalte nicht verwendet.

Beachten Sie, dass die Leistung dieses Befehls nicht unbedingt gut sein muss. Eine Option besteht darin, auf eine Ausfallzeit zu warten, in der Sie sicher sein können, dass niemand auf die Datenbank zugreift, die aktuelle Tabelle umzubenennen und dann create table zu verwenden und insert into ... select from um die Spalten zu übertragen, die Sie nicht löschen möchten.

Eine der neueren Versionen von Oracle verfügt tatsächlich über ein vorläufiges Löschen, mit dem eine Spalte einfach als nicht verwendet markiert werden kann, ohne sie physisch zu entfernen. Es hat den gleichen Effekt, da Sie es nicht mehr referenzieren können und es einen Befehl in der Art von alter table ... drop unused columns gibt die in ruhiger Zeit ausgeführt werden soll, die die harte Arbeit erledigt, sie tatsächlich physisch zu entfernen.

Dies hat den Vorteil, dass die Spalten sofort "verschwinden", ohne dass die Datenbankleistung während Stoßzeiten beeinträchtigt wird.