Добавить столбец на SQL Server в определенном месте? - PullRequest
5 голосов
/ 19 октября 2010

Я хотел бы знать, есть ли способ добавить столбец в таблицу SQL Server после его создания и в определенной позиции ??

Спасибо.

Ответы [ 9 ]

8 голосов
/ 19 октября 2010

Вы можете сделать это в Management-Studio. Вы можете проверить, как это происходит, сгенерировав SQL-скрипт ДО сохранения изменений. В основном это достигается с помощью:

  • удаление всех внешних ключей
  • создание новой таблицы с добавленным столбцом
  • копирование всех данных из старого в новую таблицу
  • сбросив старый стол
  • переименование новой таблицы в старое имя
  • воссоздание всех внешних ключей
5 голосов
/ 19 октября 2010

В дополнение ко всем остальным ответам помните, что вы можете переупорядочивать и переименовывать столбцы в VIEW. Таким образом, если вы считаете необходимым хранить данные в одном формате, но представлять их в другом, вы можете просто добавить столбец в конец таблицы и создать одно табличное представление, которое переупорядочивает и переименовывает столбцы, которые вы хотите отобразить. Почти во всех обстоятельствах это представление будет вести себя точно так же, как исходная таблица.

2 голосов
/ 19 октября 2010

Как уже отмечали другие, вы можете сделать это, создав временную таблицу, перемещая данные и удаляя исходную таблицу, а затем переименовывая другую таблицу.Хотя это глупо.Если ваша таблица большая, это может занять очень много времени, и пользователи будут заблокированы во время процесса.Это то, что вы НИКОГДА не хотите делать с любым рабочим столом.

Нет абсолютно никакой причины заботиться о том, в каком порядке расположены столбцы в таблице, так как вам все равно не следует полагаться на порядок столбцов (что, если кто-то еще сделал ту же самую глупость?).Запросы не должны использовать select * или порядковые позиции для получения столбцов.Если вы делаете это сейчас, это неработающий код, и его необходимо исправить немедленно, так как результаты не всегда будут соответствовать ожидаемым.Например, если вы вставляете столбец в нужное вам место, а кто-то другой использует select * для отчета, номер компонента внезапно появляется в том месте, где раньше находилась цена.

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

2 голосов
/ 19 октября 2010

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

Это то, что Management Studio делает для вас, когда вы вставляете столбцы.

2 голосов
/ 19 октября 2010

Самый безопасный способ сделать это.

  • Создать новую таблицу с правильным порядком столбцов
  • Скопировать данные из старой таблицы.
  • УдалитьСтарый Стол.
1 голос
/ 19 октября 2010

В базах данных таблицы столбцов не имеют порядок.

Напишите правильный оператор выбора и создайте представление

1 голос
/ 19 октября 2010

Как говорит Кейн, это невозможно напрямую.Вы можете увидеть, как Management Studio делает это, добавив столбец в режиме конструктора и проверив скрипт изменения.

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

1 голос
/ 19 октября 2010

В Sql Server Management Studio вы можете открыть таблицу в дизайне и перетащить столбец в любое место

0 голосов
/ 19 октября 2010

номер

Обычно SSMS за кулисами копирует таблицу, ограничения и т. Д., Удаляет старую таблицу и переименовывает новую.

Причина проста - столбцы не предназначены для упорядочения (как и строки), поэтому вы всегда должны перечислять, какие столбцы вы хотите в результирующем наборе (выбор * - это немного хак)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...