Что эквивалентно 'CREATE TABLE & # 8230; LIKE & # 8230; " в SQL Server

StackOverflow https://stackoverflow.com/questions/616104

  •  03-07-2019
  •  | 
  •  

Вопрос

Я работаю с SQL Server (я нуб SQL Server) и пытаюсь изменить таблицу. Я хочу CREATE TABLE LIKE , чтобы безопасно хранить данные, в то время как я удаляю ключи и ограничения, а также все другие ригаморолы, которые, как кажется, требуется SQL Server при изменении исходной таблицы, но я не смог найти соответствия к этой команде ...

Это было полезно?

Решение

Вы можете сделать

SELECT * INTO #MyTable_tmp ИЗ MyTable

Затем измените вашу MyTable и скопируйте ваши данные обратно. Другие подходы, которые я видел, - это создать новую таблицу с именем Mytable_Tmp (не временной), которая будет вашей новой таблицей.

Затем скопируйте данные, выполнив любые необходимые миграции. Затем вы сбросите исходную таблицу и сделаете переименование на Mytable.

Или вы можете получить один из многих превосходных инструментов, которые сравнивают базы данных и генерируют разностные сценарии, или VSTS DB Edition (поставляется с разработчиком), и вы можете сделать diff-файл из файла проекта в БД.

Изменить

Когда вы запускаете SELECT * INTO #MyTable FROM MyTable, SQL Server создает новую временную таблицу с именем #MyTable, которая соответствует каждому столбцу и типу данных из вашего предложения select. В этом случае мы выбираем *, чтобы он соответствовал MyTable. Это только создает столбцы, которые не копируют значения по умолчанию, индексы ограничений или что-то еще.

Другие советы

вы хотите воссоздать ту же структуру?

как насчет этого

 SELECT *
 into test
 FROM myRealTable
 where 0=1

данные не будут вставлены в новую таблицу

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top