Sql server 如何像其他表一样在SQLServer中创建表?
我想创建一个与SQLServer中的另一个表类似的表 在Postgres中,我使用以下请求创建它: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
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