如何在sql server中像其他表一样创建表?
我想创建一个像SQL Server中的另一个表一样的表。如何在sql server中像其他表一样创建表?
在Postgres里,我用这个请求创建它:
CREATE TABLE IF NOT EXISTS table2 (LIKE table1 INCLUDING ALL) INHERITS (table1)
尝试
SELECT *
INTO table2
FROM table1
,如果你想要的表是空的,然后
TRUNCATE table2
另一种选择将脚本table1
编写为create,然后编辑脚本以创建table2
脚本选项是首选,因为它也会保留所有索引,键等。您需要确保重命名索引和表格。
像这样的东西应该工作:
IF OBJECT_ID('table1', 'U') IS NULL BEGIN
SELECT TOP 0 * INTO table1 FROM table2
END
这将克隆在table1
的table2
列定义不插入任何数据(因为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
thx为您的回应,但如何处理所有指标? –
@Mahamakni检查我的更新与现有表中的英国,PK,FK脚本。 – Alex
select top 0 * into x from y
会给你没有数据的表的空壳,没有数据完全被定义为原始表减去所有索引,约束等
thx为您的回应,但如何处理所有指标? –
一些示例数据和期望的输出将会很好,即使没有这个答案也是可能的。 –
不相关,但是:'像table1' **和**'继承(table1)'一样创建表格没有任何意义。 –
在SSMS中脚本'table1'(右键单击表,script> CREATE),将名称更改为'table2',并执行脚本。 –