2016-11-11 28 views
0

我想创建一个像SQL Server中的另一个表一样的表。如何在sql server中像其他表一样创建表?

在Postgres里,我用这个请求创建它:

CREATE TABLE IF NOT EXISTS table2 (LIKE table1 INCLUDING ALL) INHERITS (table1) 
+0

一些示例数据和期望的输出将会很好,即使没有这个答案也是可能的。 –

+0

不相关,但是:'像table1' **和**'继承(table1)'一样创建表格没有任何意义。 –

+2

在SSMS中脚本'table1'(右键单击表,script> CREATE),将名称更改为'table2',并执行脚本。 –

回答

0

尝试

SELECT *  
INTO table2 
FROM table1 

,如果你想要的表是空的,然后

TRUNCATE table2 

另一种选择将脚本table1编写为create,然后编辑脚本以创建table2

脚本选项是首选,因为它也会保留所有索引,键等。您需要确保重命名索引和表格。

1

像这样的东西应该工作:

IF OBJECT_ID('table1', 'U') IS NULL BEGIN 
    SELECT TOP 0 * INTO table1 FROM table2 
END 

这将克隆在table1table2列定义不插入任何数据(因为top 0的)。

然后您必须为table1创建PK,UK,FK。为此,你可以检查:https://www.mssqltips.com/sqlservertip/3443/script-all-primary-keys-unique-constraints-and-foreign-keys-in-a-sql-server-database-using-tsql/

有了这个资源,你可以生成一个ALTER TABLE脚本添加所有PK,英国,FK在一个变量并运行它想:

DECLARE @sqlCommand nvarchar(1000) 
EXECUTE sp_executesql @sqlCommand 
+0

thx为您的回应,但如何处理所有指标? –

+0

@Mahamakni检查我的更新与现有表中的英国,PK,FK脚本。 – Alex

-1
select top 0 * into x from y 

会给你没有数据的表的空壳,没有数据完全被定义为原始表减去所有索引,约束等

+0

thx为您的回应,但如何处理所有指标? –