TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1258 3.2K
⚡️ SQL совет: миграции БД без боли (как в продакшене)

Если ты до сих пор “правишь базу руками”, а потом ловишь рассинхрон между dev/stage/prod - остановись.

Правильная миграция БД должна быть:
✅ воспроизводимой
✅ версионируемой
✅ безопасной при откате
✅ без даунтайма (по возможности)

Ключевые правила миграций:
1) Каждое изменение = отдельная миграция (не правь историю)
2) Только вперёд: rollback делай отдельной миграцией
3) Миграции должны быть idempotent, если это возможно
4) Никаких “ALTER TABLE в обед” на проде
5) Разделяй schema и data миграции
6) Для больших таблиц - делай изменения по шагам (expand -> migrate -> contract)

Самый безопасный паттерн:
- Добавляешь новое поле/таблицу (expand)
- Пишешь код, который работает и со старым, и с новым
- Переносишь данные (migrate)
- Удаляешь старое (contract)


-- 1) таблица миграций (если нет инструмента)
create table if not exists schema_migrations (
version text primary key,
applied_at timestamptz not null default now()
);

-- 2) миграция: добавляем колонку безопасно
alter table users add column if not exists phone text;

-- 3) перенос данных (пример)
update users
set phone = regexp_replace(contact, '[^0-9+]', '', 'g')
where phone is null and contact is not null;

-- 4) фиксируем версию миграции
insert into schema_migrations(version)
values ('2026_01_21_add_users_phone')
on conflict do nothing;
  • 👍 6
  • ❤ 3
  • 🔥 2
  • 😭 1
  • 💊 1
More from @databases_tg
  1. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  2. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
  3. Sep 25, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  4. Sep 24, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
  5. Sep 23, 2026⚡️ SQL-задача с подвохом Что вернёт этот запрос в PostgreSQL? CREATE TABLE payments ( id i…
  6. Sep 17, 2026🖥 Race condition в SQL: как продать последний товар дважды? Race condition в SQL: Дио и Д…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →