801 Stimmen

Spalte umbenennen SQL Server 2008

Ich verwende SQL Server 2008 und Navicat. Ich muss eine Spalte in einer Tabelle mit SQL umbenennen.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Diese Aussage funktioniert nicht.

134voto

Carrie Kendall Punkte 10969

Alternativ zu SQL können Sie dies in Microsoft SQL Server Management Studio tun. Hier sind ein paar schnelle Möglichkeiten, die GUI zu verwenden:

Erster Weg

Langsamer Doppelklick auf die Spalte. Der Spaltenname wird zu einem editierbaren Textfeld.


Zweiter Weg

Klicken Sie mit der rechten Maustaste auf die Spalte und wählen Sie Umbenennen aus dem Kontextmenü.

Zum Beispiel:

To Rename column name


Dritter Weg

Dieser Weg ist vorzuziehen, wenn Sie mehrere Spalten auf einmal umbenennen müssen.

  1. Klicken Sie mit der rechten Maustaste auf die Tabelle, die die Spalte enthält, die umbenannt werden soll.
  2. Klicken Sie auf Gestaltung .
  3. Klicken Sie im Tabellenentwurfsbereich auf das Textfeld des Spaltennamens, den Sie ändern möchten, und bearbeiten Sie es.

Zum Beispiel: MSSMS Table Design Example

<strong>HINWEIS: </strong>Ich weiß, dass OP speziell nach einer SQL-Lösung gefragt hat, aber ich dachte, das könnte anderen helfen :)

74voto

TechDo Punkte 17824

Versuchen Sie es:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

41voto

Taher Punkte 533

Sie sollten auch das Schema der Tabelle angeben, da Sie sonst diesen Fehler erhalten könnten:

M Parameter @objname ist mehrdeutig oder der angegebene @objtype (COLUMN) ist falsch.

Wenn es sich um ein Deployment-Skript handelt, würde ich auch empfehlen, es mit zusätzlichen Sicherheitsmaßnahmen zu versehen.

IF EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'OldColumnName' AND
            object_name(object_id) = 'TableName'
    ) AND
    NOT EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'NewColumnName' AND
            object_name(object_id) = 'TableName'
    )
    EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';

22voto

Sie können verwenden sp_rename um eine Spalte umzubenennen.

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

Der erste Parameter ist das zu ändernde Objekt, der zweite Parameter ist der neue Name, der dem Objekt gegeben wird, und der dritte Parameter KOLUMNE teilt dem Server mit, dass die Umbenennung für den column und kann auch zum Umbenennen verwendet werden tables , index y alias data type .

20voto

NeverHopeless Punkte 10831

Es wäre ein guter Vorschlag, eine bereits eingebaute Funktion zu verwenden, aber es gibt auch eine andere Möglichkeit, sie zu umgehen:

  1. Erstellen Sie eine neue Spalte mit demselben Datentyp und NEUEM NAMEN.
  2. Führen Sie eine UPDATE/INSERT-Anweisung aus, um alle Daten in eine neue Spalte zu kopieren.
  3. Lassen Sie die alte Spalte fallen.

Der Vorteil der Verwendung des sp_rename ist, dass es sich um alle damit verbundenen Beziehungen kümmert.

Von der Dokumentation :

sp_rename benennt automatisch den zugehörigen Index um, wenn ein PRIMARY KEY oder eine UNIQUE-Beschränkung umbenannt wird. Wenn ein umbenannter Index an eine PRIMARY KEY-Beschränkung gebunden ist, wird die PRIMARY KEY-Beschränkung ebenfalls automatisch von sp_rename umbenannt. sp_rename kann zum Umbenennen von primären und sekundären XML-Indizes verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X