Sql server 如何像其他表一样在SQLServer中创建表?

Sql server 如何像其他表一样在SQLServer中创建表?,sql-server,inheritance,sql-like,Sql Server,Inheritance,Sql Like,我想创建一个与SQLServer中的另一个表类似的表 在Postgres中,我使用以下请求创建它: CREATE TABLE IF NOT EXISTS table2 (LIKE table1 INCLUDING ALL) INHERITS (table1) 像这样的方法应该会奏效: IF OBJECT_ID('table1', 'U') IS NULL BEGIN SELECT TOP 0 * INTO table1 FROM table2 END 这将克隆table1中table

我想创建一个与SQLServer中的另一个表类似的表

在Postgres中,我使用以下请求创建它:

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

像这样的方法应该会奏效:

IF OBJECT_ID('table1', 'U') IS NULL BEGIN
   SELECT TOP 0 * INTO table1 FROM table2
END
这将克隆
table1
table2
的列定义,而不插入任何数据(因为
top 0

然后您必须为
表1
创建PK、UK、FK。为此,您可以检查:

使用此资源,您可以生成一个
altertable
脚本,将所有PK、UK、FK添加到一个变量中,并按如下方式运行:

DECLARE @sqlCommand nvarchar(1000)
EXECUTE sp_executesql @sqlCommand
将为您提供一个空的表外壳,其中没有精确定义为原始表减去所有索引、约束等的数据

SELECT *    
INTO table2
FROM table1 where 1=2
  • SELECT*
    =选择所有列
  • 进入
    =设置地点
  • FROM
    =要查找的位置
  • 其中1=2
    =筛选条件

一些示例数据和所需的输出会很好,即使没有这个答案也是可能的。不相关的,但是:
像table1一样创建表
一起继承(table1)
没有任何意义。在SSMS中(右键单击表,脚本>创建),将名称更改为
table2
,并执行脚本。@Mahamakni使用现有表中的UK、PK、FK脚本检查我的更新。在回答中添加一些细节。
SELECT *    
INTO table2
FROM table1 where 1=2