Добавление столбца между двумя другими столбцами в SQL-сервере

Можете ли вы добавить столбец в таблицу, вставив его между двумя существующими столбцами в SQL Server, не удаляя и не создавая заново таблицу?

8 ответов

Решение

Простой ответ - нет. Есть ли причина, почему порядок столбцов важен для вас?

Средне длинный ответ, да (да), но он уродлив, и вы, вероятно, не захотите этого делать.

пожалуйста, обратите внимание: этот код создает физическую таблицу

CREATE TABLE MyTest (a int, b int, d int, e int)

INSERT INTO MyTest (a,b,d,e) VALUES(1,2,4,5)

SELECT * FROM MyTest

ALTER TABLE MyTest ADD c int
ALTER TABLE MyTest ADD d_new int
ALTER TABLE MyTest ADD e_new int

UPDATE MyTest SET d_new = d, e_new = e

ALTER TABLE MyTest DROP COLUMN d
ALTER TABLE MyTest DROP COLUMN e

EXEC SP_RENAME 'MyTest.d_new', 'd';
EXEC SP_RENAME 'MyTest.e_new', 'e';

SELECT * FROM MyTest 

DROP TABLE MyTest

Да, вы можете добавить вот запрос для вашей проблемы: ALTER таблица table_name ADD столбец column_name(новый) тип данных AFTER column_name

Посмотрите на эту ссылку:

http://www.bobsgear.com/display/ts/Adding+Column+After+Another+Column+-+SQL+Server+2005

Как видите, ответ:

"невозможно без перемещения данных во временную таблицу"

что на самом деле делает SQL Server Management Studio.

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


в ответ на комментарии, да, это с помощью SQL Server Management Studio через пользовательский интерфейс, и под капотом он выполняет удаление / воссоздание, которое вы пытаетесь избежать, поэтому нет, вы не можете сделать это без того, чтобы сервер это делал для тебя.

Это возможно в SQL Server Management Studio (SSMS). Отфильтруйте таблицу в обозревателе объектов и щелкните правой кнопкой мыши таблицу> Дизайн

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

Первый ответ, нет.

Второй ответ, согласно этой теме http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912, найден через Можно ли логически изменить порядок столбцов в таблице? Вы можете создать столбец, а затем изменить порядок столбцов в таблице, отредактировав системные таблицы. Но это выглядит невероятно грязно, и я бы не поверил, что все не сломается.

Для Mysql да Для сервера SQL Нет также не рекомендуется добавлять столбец между ними, так как это может затруднить некоторые запросы, если вы полагаетесь на схему таблицы в своем проекте.

Другие вопросы по тегам