SQL Server中的'CREATE TABLE ... LIKE ...'相当于什么

时间:2009-03-05 18:54:06

标签: sql-server tsql alter

我正在使用SQL Server(我是SQL Server noob)并尝试更改表。我希望CREATE TABLE LIKE安全地存储数据,同时我删除了键和约束以及SQL Server在原始表上更改时似乎需要的所有其他rigamorole但我无法找到该命令的匹配项。

2 个答案:

答案 0 :(得分:26)

您想重新创建相同的结构吗?

这个怎么样

 SELECT *
 into test
 FROM myRealTable
 where 0=1

不会将数据插入新表

答案 1 :(得分:16)

你可以做到

SELECT * INTO #MyTable_tmp 来自MyTable

然后修改你的MyTable,然后重新复制你的数据。我见过的其他方法是创建一个新表调用Mytable_Tmp(不是临时表),这将是你的新表。

然后将数据复制到您需要的任何迁移中。然后,您将删除原始表并在Mytable上重命名。

或者你可以获得许多比较数据库并生成不同脚本或VSTS DB Edition(与开发人员一起提供)的优秀工具之一,你可以从项目文件到数据库执行diff脚本。

修改

当您运行SELECT * INTO #MyTable FROM MyTable时,SQL Server会创建一个名为#MyTable的新临时表,该表匹配select子句中的每个列和数据类型。在这种情况下,我们选择*,因此它将匹配MyTable。这只会创建不复制默认值,约束索引或其他任何内容的列。