Wie entferne ich eine Spalte aus einer vorhandenen Tabelle?
Ich habe einen Tisch MEN
mit Fname
undLname
Ich muss das entfernen Lname
Wie es geht?
sql-server
Gali
quelle
quelle
Antworten:
quelle
Generisch:
In Ihrem Fall:
quelle
Ihr Beispiel ist einfach und erfordert keine zusätzlichen Tabellenänderungen, aber im Allgemeinen ist dies nicht so trivial.
Wenn diese Spalte von anderen Tabellen referenziert wird, müssen Sie herausfinden, was mit anderen Tabellen / Spalten zu tun ist. Eine Möglichkeit besteht darin, Fremdschlüssel zu entfernen und referenzierte Daten in anderen Tabellen zu behalten.
Eine andere Möglichkeit besteht darin, alle referenzierenden Spalten zu finden und ebenfalls zu entfernen, wenn sie nicht mehr benötigt werden.
In solchen Fällen besteht die eigentliche Herausforderung darin, alle Fremdschlüssel zu finden. Sie können dies tun, indem Sie Systemtabellen abfragen oder Tools von Drittanbietern wie ApexSQL Search (kostenlos) oder Red Gate Dependency Tracker (Premium, aber mehr Funktionen) verwenden. Es gibt einen ganzen Thread auf Fremdschlüssel hier
quelle
Dies ist die richtige Antwort:
Aber ... wenn ein
CONSTRAINT
auf das existiertCOLUMN
, dann müssen SieDROP
dasCONSTRAINT
erste, dann sind Sie in der Lage sein ,DROP
dieCOLUMN
.CONSTRAINT
Führen Sie Folgendes aus , um a zu löschen :quelle
constraint
einer Spalte ?In SQL Server 2016 können Sie neue DIE-Anweisungen verwenden.
Die obige Abfrage kann in
drops
der Spalte nur dann erneut ausgeführt werden, wenn dies der Fall istexists
in der in der Tabelle andernfalls keinen Fehler auslöst.Anstatt große
IF
Wrapper zu verwenden, um die Existenz von zu überprüfen,column
bevor Sie sie löschen, können Sie einfach die obigeDDL
Anweisung ausführenquelle
Die Frage ist, können Sie nur eine Spalte aus einer nicht vorhandenen Tabelle löschen ;-)
quelle
Die einfache Antwort darauf lautet:
Es kann mehr als eine Spalte wie folgt angegeben werden:
Ab SQL Server 2016 ist es auch möglich, die Spalte nur dann zu löschen, wenn sie vorhanden ist. Dies verhindert, dass Sie eine Fehlermeldung erhalten, wenn die Spalte nicht vorhanden ist, was Sie wahrscheinlich nicht interessiert.
Es gibt einige Voraussetzungen, um Spalten zu löschen. Die abgelegten Spalten können nicht sein:
Wenn eine der oben genannten Aussagen zutrifft, müssen Sie diese Assoziationen zuerst löschen.
Es sollte auch beachtet werden, dass das Löschen einer Spalte den Speicherplatz von der Festplatte nicht zurückfordert, bis der Clustered-Index der Tabelle neu erstellt wird. Daher ist es oft eine gute Idee, dem obigen Befehl einen Tabellenwiederherstellungsbefehl wie den folgenden zu folgen:
Schließlich kann dies, wie einige gesagt haben, langsam sein und wird wahrscheinlich die Tabelle für die Dauer sperren. Es ist möglich, eine neue Tabelle mit der gewünschten Struktur zu erstellen und diese dann wie folgt umzubenennen:
Beachten Sie jedoch, dass hier zwischen dem ersten Auswahl- und dem letzten Umbenennungsbefehl ein Fenster für den Datenverlust eingefügter Zeilen angezeigt wird.
quelle
So fügen Sie Spalten in vorhandene Tabellen ein:
So löschen Sie Spalten in einer vorhandenen Tabelle:
quelle
Dies kann auch über die SSMS-GUI erfolgen. Das Schöne an dieser Methode ist, dass Sie gewarnt werden, wenn in dieser Spalte Beziehungen vorhanden sind, und diese auch automatisch gelöscht werden können.
Wie bereits erwähnt, werden Sie an dieser Stelle gefragt, ob Sie auch diese löschen möchten, wenn es Beziehungen gibt, die ebenfalls gelöscht werden müssten. Sie müssen dies wahrscheinlich tun, um die Spalte zu löschen.
quelle
Wenn Sie C # verwenden und die Spalte "Identität" int ist, erstellen Sie eine neue Instanz von int, ohne einen Wert anzugeben. Es hat bei mir funktioniert.
quelle
Syntax:
Zum Beispiel:
quelle