Задать вопрос
@choupa
Архитектор (обычный, который строит)

Как поступают, когда в таблицу большого старого работающего проекта надо добавить столбец?

Эпиграф:
Только ничего не трогай, сынок.


1. Таблица имеет один индекс.
2. Существующий код подвязан на количество столбцов.
3. Дополнительная колонка нужна не для всех строк, даже для меньшей их части.

Пока думаю городить новую таблицу "продолжение вправо" с таким же индексом. А как поступают гуру в таких ситуациях. (Правда, гуру их, наверное, не допускают).
  • Вопрос задан
  • 317 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@sAndreas
Юзер
Существующий код подвязан на количество столбцов.

во первых потихоньку переписать код, который ссылается на номер столбца на код который будет ссылаться на название столбца. Но это можно сделать и потом.
во вторых проверить все ТУПЫЕ запросы типа
select * from table1
union
select * from table2
и переписать их в вид
select id, name... from table1
union
select id, name... from table2
и только потом добавлять столбец, он должен добавиться последним(если через консоль писать alter table, через графический редактор может столбец влезать и не последним). Лучше конечно заранее подготовиться, сделать копию таблицы, выбрать время в которое никто не работает с этой таблицей, менять и самому тестить(например в 11 вечера). А также заранее предупредить всех пользователей(если это внутренний проект и вообще пользователей можно предупредить), чтобы они в случае чего сразу писали. Правда они могут оборзеть и писать что у них чайник в коридоре стал долго воду кипятить и скорее всего это всё из-за вашего "чего то там новенького", но зато если реально из-за вас что нибудь "упадёт", то хотя бы вы сразу это исправите и меньше шансов что получите пилюлю.
Ответ написан
Комментировать
@maxtm
Make money, not job
А в чем собственно проблема? Нужна колонка - добавляйте.
Если что-то сломается от изменения кол-ва колонок - не добавляйте, делайте доп. таблицу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы