0Pricing
SQL Academy · Урок

Переименование столбцов без остановки

Добавьте новый столбец, выполняйте двойную запись, заполните его существующими данными, переключите чтение и удалите старый — это классический шаблон переименования без остановки

«Переименование столбцов без остановки» — бесплатный урок SQL Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Наивный подход не работает

ALTER TABLE t RENAME COLUMN a TO b; изменяет только метаданные и выполняется быстро. НО приложение ожидает столбец «a»; после переименования каждый запрос, читающий «a», завершится с ошибкой.

Стратегия: расширение → перенос → сокращение

Классический шаблон миграции без остановки работы:

  1. Расширение — добавьте новый столбец, не удаляя старый
  2. В течение некоторого времени записывайте данные в оба столбца
  3. Перенос — перенесите исторические данные в новый столбец пакетами
  4. Переключите чтение на новый столбец
  5. Сокращение — удалите старый столбец

Пошаговое переименование user_name → full_name

Подробное руководство:

Шаг 1 — добавьте новый столбец

Без остановки работы (только метаданные в PG 11+ при использовании постоянного значения по умолчанию):

ALTER TABLE users ADD COLUMN full_name VARCHAR(100);

Шаг 2 — двойная запись

Разверните код, который записывает данные в оба столбца (BOTH):

// App writes to both:
UPDATE users SET user_name = $1, full_name = $1 WHERE id = $2;
INSERT INTO users (..., user_name, full_name) VALUES (..., $name, $name);

Шаг 3 — заполните новый столбец

Скопируйте исторические данные пакетами:

UPDATE users SET full_name = user_name
WHERE full_name IS NULL
  AND id IN (
    SELECT id FROM users WHERE full_name IS NULL LIMIT 10000
  );
-- Run in a loop until 0 rows affected.

Шаг 4 — добавьте NOT NULL без остановки работы

После заполнения нового столбца безопасно добавьте ограничение NOT NULL:

ALTER TABLE users
  ADD CONSTRAINT fn_not_null CHECK (full_name IS NOT NULL) NOT VALID;
ALTER TABLE users VALIDATE CONSTRAINT fn_not_null;
ALTER TABLE users ALTER COLUMN full_name SET NOT NULL;
ALTER TABLE users DROP CONSTRAINT fn_not_null;

Шаг 5 — переключите чтение

Разверните код, который читает full_name вместо user_name.

Шаг 6 — прекратите двойную запись

Разверните код, который записывает данные только в full_name.

Шаг 7 — удалите старый столбец

Без остановки работы (только метаданные):

ALTER TABLE users DROP COLUMN user_name;

Компромисс: время и сложность

Простое переименование превращается в 4–7 развёртываний в течение нескольких дней или недель. Для нетривиальных рабочих систем это единственный безопасный путь.

Переименование таблиц

Похожий, но более сложный шаблон. Используйте VIEW как временный псевдоним:

ALTER TABLE old_name RENAME TO new_name;
CREATE VIEW old_name AS SELECT * FROM new_name;
-- Deploy new code. Then drop the view.

Итоги

Переименование столбцов без остановки работы выполняется по схеме «расширение → перенос → сокращение».

  • Добавьте новый столбец
  • Выполняйте двойную запись
  • Заполните новый столбец пакетами
  • Переключите чтение
  • Прекратите запись в старый столбец
  • Удалите старый столбец

Быстрая проверка

Какая фаза наступает IMMEDIATELY после развёртывания двойной записи в старый и новый столбцы?

Часто задаваемые вопросы

Урок «Переименование столбцов без остановки» бесплатный?

Да — полный текст урока «Переименование столбцов без остановки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переименование столбцов без остановки»?

Добавьте новый столбец, выполняйте двойную запись, заполните его существующими данными, переключите чтение и удалите старый — это классический шаблон переименования без остановки Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Переименование столбцов без остановки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Миграции без остановки: почему ALTER TABLE блокирует таблицы
  2. Параллельное создание индексов (CREATE INDEX CONCURRENTLY)
  3. Переименование столбцов без остановки
  4. Инструменты: Flyway, Liquibase, Sqitch
← Назад к SQL Academy