Подтвердить что ты не робот

Добавить столбец в определенную позицию на сервере MSSQL

ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk

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

4b9b3361

Ответ 1

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

Ответ 2

Даже если вопрос старый, потребуется более точное описание Management Studio.

Вы можете создать столбец вручную или с помощью Management Studio. Но Management Studio потребует воссоздать таблицу и приведет к тайм-ауту, если у вас слишком много данных в нем, избегайте, если таблица не светится.

Чтобы изменить порядок столбцов, вам просто нужно переместить их в Management Studio. Это не должно требовать (как правило, исключений), что Management Studio воссоздает таблицу, поскольку она скорее всего изменит координацию столбцов в определениях таблиц.

Я делал это так много раз с таблицами, что я не мог добавить столбцы с графическим интерфейсом из-за данных в них. Затем перемещали столбцы с помощью графического интерфейса Management Studio и просто сохраняли их.

Вы перейдете от гарантированного времени до нескольких секунд ожидания.

Ответ 3

В MSSMS выберите таблицу в проводнике объектов. Щелкните правой кнопкой мыши и выберите вариант. Это приведет к новой вкладке, где вы можете перетащить столбцы в новый порядок по умолчанию. Сохранить и престо! Готово.

Ответ 4

Шаги:

  • Переименуйте исходную таблицу в tablename_temp
  • создать новую таблицу, содержащую новый столбец
  • вставить в tablename select * from tablename_temp
  • воссоздать внешние ключи и другое ограничение для новой таблицы

Ответ 5

Вам нужно создать другую таблицу и скопировать данные. Но посмотрите на "порядковое положение" и попробуйте обновить его?

SELECT 
   ORDINAL_POSITION
  ,COLUMN_NAME
  ,DATA_TYPE
  ,CHARACTER_MAXIMUM_LENGTH
  ,IS_NULLABLE
  ,COLUMN_DEFAULT
FROM   
  INFORMATION_SCHEMA.COLUMNS 
WHERE   
  TABLE_NAME = 'Product' 
ORDER BY 
  ORDINAL_POSITION ASC; 

Первичный ключ - это еще один вопрос, для которого вы можете найти множество ответов.