Как изменить название столбца в SQL Server

В SQL Server название столбца меняют через системную процедуру sp_rename. Команда короткая, но действие не такое безобидное: если старое имя столбца используется в запросах, представлениях, процедурах или коде приложения, после переименования они могут перестать работать

Базовый пример:

EXEC sp_rename 'dbo.Products.old_name', 'new_name', 'COLUMN';

Здесь dbo.Products.old_name — старый столбец с указанием схемы и таблицы, new_name — новое имя столбца, COLUMN — тип переименуемого объекта

Как проверить текущее имя столбца

Перед переименованием посмотрите структуру таблицы

SELECT
    COLUMN_NAME,
    DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
  AND TABLE_NAME = 'Products';

Так вы убедитесь, что столбец существует и написан именно так, как вы собираетесь указать в sp_rename

Как найти зависимости

Для быстрой проверки можно поискать старое имя столбца в процедурах и представлениях

SELECT
    OBJECT_SCHEMA_NAME(object_id) AS schema_name,
    OBJECT_NAME(object_id) AS object_name,
    definition
FROM sys.sql_modules
WHERE definition LIKE '%old_name%';

Это не ловит все случаи, но помогает увидеть явные зависимости. Код приложения и внешние отчеты такой запрос не проверит, их нужно смотреть отдельно

Как переименовать столбец

Пример для учебной таблицы:

EXEC sp_rename 'dbo.Products.article_old', 'article', 'COLUMN';

После выполнения проверьте структуру таблицы

SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
  AND TABLE_NAME = 'Products';

Если в списке есть article и нет article_old, переименование прошло

Что изменится и что не изменится

Переименование меняет имя столбца в таблице. Данные в столбце остаются на месте. Тип данных не меняется. Индексы и ограничения могут продолжить работать, но их имена не всегда меняются автоматически

Главный риск — старые запросы. Если где-то написано SELECT article_old FROM dbo.Products, после переименования запрос начнет падать

Мини-практика

На учебной базе создайте таблицу и переименуйте столбец

CREATE TABLE dbo.Products (
    id INT,
    old_price INT
);

EXEC sp_rename 'dbo.Products.old_price', 'price', 'COLUMN';

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products';

Проверьте, что появился столбец price

Частые ошибки

Первая ошибка — не указать COLUMN. Без третьего аргумента можно получить неоднозначность или предупреждение

Вторая ошибка — переименовать столбец, который используется в представлении. Представление может не обновиться так, как ожидается

Третья ошибка — забыть про код приложения. База может переименовать столбец успешно, но приложение продолжит обращаться к старому имени

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Как проверить результат на практике

Для SQL-материала всегда начинайте с маленькой тестовой таблицы или с ограниченного набора строк. Сначала выполните SELECT, который показывает будущие данные, затем проверьте условие WHERE, сортировку или соединение, и только после этого переходите к изменяющим командам вроде UPDATE, DELETE или ALTER TABLE. Такой порядок снижает риск случайно изменить больше строк, чем планировалось

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

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x