Hernoem kolom SQL Server 2008

Ik gebruik SQL Server 2008 en Navicat. Ik moet een kolom in een tabel hernoemen met behulp van SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Deze verklaring werkt niet.


Antwoord 1, Autoriteit 100%

Gebruik sp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

Zie: SQL Server – Hoe een kolomnaam of tabelnaam te hernoemen

Documentatie: sp_rename (transact-sql)

Voor uw zaak zou het zijn:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

Vergeet niet om afzonderlijke aanhalingstekens te gebruiken om uw waarden bij te sluiten.


Antwoord 2, Autoriteit 9%

Als alternatief voor SQL, kunt u dit doen in Microsoft SQL Server Management Studio. Hier zijn een paar snelle manieren met behulp van de GUI:

eerste manier

Dubbelklik op de kolom. De kolomnaam wordt een bewerkbare tekstvak.


tweede manier

Klik met de rechtermuisknop op kolom en kies Naam wijzigen in het contextmenu.

Bijvoorbeeld:


Derdeweg

Op deze manier heeft de voorkeur voor wanneer u in één keer meerdere kolommen moet hernoemen.

  1. Klik met de rechtermuisknop op de tabel met de kolom die nodig heeft om te hernoemen.
  2. Klik op Ontwerp.
  3. Klik in het tabelontwerppaneel en bewerk het tekstvak van de kolomnaam die u wilt wijzigen.

Bijvoorbeeld:

OPMERKING:ik weet dat OP specifiek om een SQL-oplossing vroeg, ik dacht dat dit anderen zou kunnen helpen 🙂


Antwoord 3, autoriteit 5%

Probeer:

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

Antwoord 4, autoriteit 3%

Je moet ook het schema van de tabel specificeren, anders krijg je deze foutmelding:

Bericht 15248, Niveau 11, Staat 1, Procedure sp_rename, Lijn 238 Ofwel de
parameter @objname is dubbelzinnig of de geclaimde @objtype (COLUMN) is
fout.

Als het een implementatiescript is, zou ik ook aanraden er wat extra beveiliging aan toe te voegen.

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';

Antwoord 5, autoriteit 2%

Het zou een goede suggestie zijn om een reeds ingebouwde functie te gebruiken, maar een andere manier is om:

  1. Maak een nieuwe kolom met hetzelfde gegevenstype en NIEUWE NAAM.
  2. Voer een UPDATE/INSERT-instructie uit om alle gegevens naar een nieuwe kolom te kopiëren.
  3. Laat de oude kolom vallen.

Het voordeel van het gebruik van de sp_renameis dat het zorgt voor alle bijbehorende relaties.

Van de documentatie:

sp_rename hernoemt automatisch de bijbehorende index wanneer een PRIMARY KEY of UNIQUE constraint wordt hernoemd. Als een hernoemde index is gekoppeld aan een PRIMARY KEY-beperking, wordt de PRIMARY KEY-beperking ook automatisch hernoemd door sp_rename. sp_rename kan worden gebruikt om primaire en secundaire XML-indexen te hernoemen.


Antwoord 6

U kunt sp_renameom een kolom te hernoemen.

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

De eerste parameter is het object dat moet worden gewijzigd, de tweede parameter is de nieuwe naam die aan het object wordt gegeven, en de derde parameter COLUMNinformeert de server dat de hernoeming is voor de column, en kan ook worden gebruikt om tables, indexen alias data typete hernoemen.


Antwoord 7

Omdat ik hier vaak kom en me dan afvraag hoe ik de haakjes moet gebruiken, kan dit antwoord nuttig zijn voor mensen zoals ik.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • De OldColumnNamemag niet in []staan. Het zal niet werken.
  • Plaats NewColumnNameniet in [], dit resulteert in [[NewColumnName]].

Antwoord 8

Sql Server management studio heeft een aantal door het systeem gedefinieerde Stored Procedures(SP)
Een daarvan wordt gebruikt om een kolom te hernoemen. De SP is sp_rename

Syntaxis:sp_rename ‘[table_name].old_column_name’, ‘new_column_name’
Raadpleeg dit artikel voor meer hulp: sp_rename door Microsoft Docs

Opmerking:Bij het uitvoeren van deze SP geeft de sql-server u een waarschuwingsbericht als ‘Let op: het wijzigen van een deel van een objectnaam kan scripts breken en opgeslagen procedures‘. Dit is alleen van cruciaal belang als u uw eigen sp hebt geschreven die betrekking heeft op de kolom in de tabel die u gaat wijzigen.


Antwoord 9

Verbeterde versie van @Taher

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
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
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END

Antwoord 10

In mijn geval gebruikte ik MySQL WorkBench en

ALTER TABLE table_name RENAME COLUMN old_name new_name varchar(50) not null; 
// without TO and specify data type of that column 

was genoeg om de kolomnaam te wijzigen!


Antwoord 11

Of je kunt gewoon twee keer langzaam op de kolom in SQL Management Studio klikken en de naam ervan wijzigen via de gebruikersinterface…


Antwoord 12

Query uitvoeren:

   SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'

Other episodes