4

是否select * into B from A也将 A 的约束复制到 B 上?如果没有,那么我该如何复制约束?

4

3 回答 3

2

您不能直接将约束从一个表复制到另一个表,首先您应该复制带有索引和约束的表结构,这样做

请按照以下说明进行操作:

  1. 在 SSMS 中右键单击表,脚本创建。

  2. 将生成的脚本中的名称更改为 NewTable

insert into NewTable select * from OldTable -- 请注意,如果 Old 足够大,它可能会很慢。

于 2014-07-30T17:10:09.193 回答
1

不,不在 SQL-Server 中。您需要手动指定新表的约束和索引。如果您使用的是 SSMS,则使用该Script As... Create To功能可以获得一个示例脚本来创建具有相同约束和结构的新表。

https://docs.microsoft.com/en-us/sql/t-sql/queries/select-into-clause-transact-sql?view=sql-server-ver15

源表中定义的索引、约束和触发器不会转移到新表中,也不能在 SELECT...INTO 语句中指定。如果需要这些对象,您可以在执行 SELECT...INTO 语句后创建它们。

于 2014-07-30T17:09:20.450 回答
0

它不会复制约束。如果您希望使用相同的约束设置两个表,则必须通过运行 create table/constraint 语句手动完成。不过,您可以让 sql server 从现有表中创建 sql 语句。使用 Sql Server Studio,在对象资源管理器中右键单击表并选择 Script As 并选择所需的选项,然后根据需要更改表名称。

于 2014-07-30T17:10:52.823 回答