Вставка столбца в SQL Server в позиции в таблице - PullRequest
4 голосов
/ 22 июля 2011

Здравствуйте! Мне нужно добавить столбец в таблицу в SQL Server 2008. Если я использую приведенный ниже скрипт:

ALTER TABLE SampleTable ADD SampleColumn bigint NULL

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

Любые идеи и предложения!

Ответы [ 4 ]

6 голосов
/ 22 июля 2011

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

Обратите внимание:

SELECT Col1, Col2, Col3
FROM Table

SELECT Col3, Col2, Col1
FROM Table

Порядок столбцов имеет значение, только если вы используете SELECT *, что является еще одной причиной не делать этого.

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

Если вам нужен обходной путь, можно создать VIEW, который выбирает поля в нужном порядке и использует его.

1 голос
/ 22 июля 2011

Если вы можете использовать SSMS, то это просто - просто «спроектируйте» свою таблицу (щелкните по ней правой кнопкой мыши), добавьте столбец, а затем перетащите его вверх / вниз в списке, где бы вы его ни хотели.

Тем не менее, если вы просматриваете сценарий изменения для этого (т. Е. Весь TSQL, стоящий за этим простым перетаскиванием), то очень много всего происходит на самом деле автоматически (включая пересоздание таблицы) .

Я знаю, что порядок столбцов имеет значение (извините @JNK) для кого-то, кто любит следовать стандартному организационному методу (например, иметь все свои внешние ключи к вершине и т. Д.), Или для кого-то, поддерживающего запросы / процедуры, которые не имеют укажите столбцы (как вы можете сделать с помощью операторов вставки или выбираете на основе позиции).

0 голосов
/ 22 июля 2011

Нет другого способа вставить столбец в таблицу SQL Server «между» существующими столбцами - вам нужно построить временную таблицу и перестроить старую таблицу. Тем не менее, порядок столбцов не должен иметь значения - вы уверены, что столбец должен быть вставлен в порядке?

Скорее всего, вам лучше всего использовать графический интерфейс пользователя, написать его сценарий, а затем изменить имя ограничения на что-то разумное в сценарии. Вы правы в том, что числовое имя ограничения не является идеальным, и не рекомендуется разрешать SQL Server определять имена ваших объектов.

проверьте ссылку ниже для получения дополнительной информации: stackoverflow.com/questions/965927/inserting-column-between-other-columns-in-sql-server-using-script

0 голосов
/ 22 июля 2011

Microsoft SQL Server Management Studio имеет параметр в меню «Сервис / Параметры». В диалоговом окне параметров выберите Дизайнеры / Дизайнеры таблиц и баз данных. На правой панели вы увидите флажок «Запретить сохранение изменений, которые требуют пересоздания таблицы». Если этот флажок установлен, вы не сможете сохранить изменения таблицы, которые требуют ее повторного создания. Снимите этот флажок, если хотите сделать это.

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