таблицу - переименовать столбец postgresql




Переименовать столбец SQL Server 2008 (7)

Было бы хорошим предложением использовать уже встроенную функцию, но другой способ:

  1. Создайте новый столбец с тем же типом данных и NEW NAME.
  2. Запустите инструкцию UPDATE / INSERT, чтобы скопировать все данные в новый столбец.
  3. Отбросьте старый столбец.

Преимущество использования sp_rename заключается в том, что он заботится обо всех связанных с ним отношениях.

Из documentation :

sp_rename автоматически переименовывает связанный индекс при переименовании PRIMARY KEY или UNIQUE. Если переименованный индекс привязан к ограничению PRIMARY KEY, ограничение PRIMARY KEY также автоматически переименовывается в sp_rename. sp_rename можно использовать для переименования первичных и вторичных индексов XML.

Я использую SQL Server 2008 и Navicat. Мне нужно переименовать столбец в таблице, используя SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Это утверждение не работает.


В качестве альтернативы SQL вы можете сделать это в Microsoft SQL Server Management Studio. Вот несколько быстрых способов использования GUI:

Первый путь

Медленно дважды щелкните по столбцу. Имя столбца станет редактируемым текстовым полем.

Второй путь

Щелкните правой кнопкой мыши по столбцу и выберите «Переименовать» в контекстном меню.

Например:

Третий путь

Этот способ предпочтительнее, когда вам нужно переименовать несколько столбцов за один раз.

  1. Щелкните правой кнопкой мыши на таблице, содержащей столбец, который нуждается в переименовании.
  2. Нажмите « Дизайн» .
  3. На панели проектирования таблиц щелкните и отредактируйте текстовое поле имени столбца, которое вы хотите изменить.

Например:

ПРИМЕЧАНИЕ. Я знаю, что OP специально запросил решение SQL, подумал, что это может помочь другим :)


Вы также должны указать схему таблицы или получить эту ошибку:

Msg 15248, уровень 11, состояние 1, процедура sp_rename, строка 238 Либо параметр @objname неоднозначен, либо заявленный код @objtype (COLUMN) ошибочен.

Если это сценарий развертывания, я бы также рекомендовал добавить к нему дополнительную защиту.

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

Или вы можете просто дважды щелкнуть дважды по столбцу в SQL Management Studio и переименовать его через интерфейс ...


Поскольку я часто прихожу сюда, а затем задаюсь вопросом, как использовать скобки, этот ответ может быть полезен для таких, как я.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • Имя OldColumnName не должно находиться в [] . Она не будет работать.
  • Не помещайте NewColumnName в [] , это приведет к [[NewColumnName]] .

Пытаться:

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

Улучшенная версия @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




alter-table