SQL Server 2008 R2 Добавить столбец в определенное место - PullRequest
13 голосов
/ 15 февраля 2011

Я использую SQL Server 2008 R2 и хочу добавить новый столбец в определенное место в порядке столбцов в таблице, а не в конце. Я хочу избежать воссоздания таблицы. Как мне сделать это без воссоздания таблицы?

т.е.

Table: Bob
==========
   Col1
   Col2

Добавить новую колонку.

Table: Bob
==========
   Col1
   NewCol
   Col2

Ответы [ 4 ]

19 голосов
/ 15 февраля 2011

Вы не можете.Столбец всегда добавляется в конец списка столбцов.Единственный способ изменить порядок - воссоздать таблицу с нуля.

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

9 голосов
/ 15 февраля 2011

Не делай этого .Это сочетается с рекомендацией никогда не использовать SELECT *, и в этом случае, поскольку вы перечисляете все столбцы, почему это имеет значение для их внутреннего порядка?демо, которое не опускает стол.Однако столбцы необходимо отбрасывать, поскольку вы не можете вставить их посередине.

create table BOB(col1 int, colspace int, col2 int, col3 varchar(10))
insert BOB values (1,3, 2,'test')
;
alter table BOB add col2_copy int, col3_copy varchar(10), NewCol datetime
;
update BOB set col2_copy = col2, col3_copy = col3
;
alter table BOB drop column col2
alter table BOB drop column col3
;
alter table BOB add col2 int, col3 varchar(10)
;
update BOB set col2 = col2_copy, col3 = col3_copy
;
alter table BOB drop column col2_copy
alter table BOB drop column col3_copy
;

select * from BOB

Это становится значительно сложнее, если у вас есть ограничения и значения по умолчанию.

1 голос
/ 01 марта 2012

Нет никакого способа, которым я видел сценарий , что вы пытаетесь сделать.Однако в SSMS (по крайней мере, в версии 10.5) вы можете щелкнуть правой кнопкой мыши таблицу в проводнике объектов и выбрать «Дизайн».Это позволяет вам вставлять столбец в любом месте в порядке столбцов.Он также сохраняет на вашем столе такие вещи, как ссылки на FK и т. Д.

Я не исследовал, чтобы убедиться, что SQL Server на самом деле делает за кулисами, и я сам не использую это для развертывания, но он есть.

0 голосов
/ 19 ноября 2014

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

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