Что эквивалентно «CREATE TABLE ... LIKE ...» в SQL Server - PullRequest
15 голосов
/ 05 марта 2009

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

Ответы [ 2 ]

26 голосов
/ 05 марта 2009

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

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

 SELECT *
 into test
 FROM myRealTable
 where 0=1

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

16 голосов
/ 05 марта 2009

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

SELECT * INTO #MyTable_tmp ИЗ MyTable

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

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

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

Редактировать

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

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