25

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

4

2 回答 2

44

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

这个怎么样

 SELECT *
 into test
 FROM myRealTable
 where 0=1

不会向新表中插入任何数据

于 2009-03-05T20:05:35.417 回答
20

你可以做

SELECT * INTO #MyTable_tmp FROM MyTable

然后修改您的 MyTable,并将您的数据复制回去。我见过的其他方法是创建一个名为 Mytable_Tmp(不是临时表)的新表,这将是您的新表。

然后复制您的数据进行所需的任何迁移。然后您将删除原始表并在 Mytable 上进行重命名。

或者,您可以获得比较数据库并生成差异脚本或 VSTS DB 版(开发人员随附)的众多出色工具之一,您可以从项目文件到数据库执行差异脚本。

编辑

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

于 2009-03-05T18:58:16.000 回答