2

如您所知,我们可以使用'select into table'在sql server中复制表结构,但是当源表的列具有默认值时,会出现问题,新创建的表中缺少默认值设置。

那么,如何保持默认值设置呢?任何线索?谢谢。

4

1 回答 1

3

我不想把它告诉你,但这不是唯一缺少的东西。我假设“默认值设置”实际上是指默认约束,即为Columns或Defaults指定默认值

该表是使用最基本的结构创建的,不复制(至少以下)

  • 聚集索引
  • 与此相关的任何其他索引
  • 参照约束
  • 与此相关的任何其他限制

当您考虑这种情况时,它更有意义

select a.clustered_id a_id, b.clustered_id b_id, b.name
  from tablea a
  join tableb b on ....

它是否应该在 a_id 或 b_id 上创建一个聚集索引(在此 JOIN 之后甚至可能不是唯一的)!?当然,您正在考虑单个表(直接克隆)的场景,但这确实是通用功能的一个非常具体的用例。

于 2013-05-07T03:10:45.047 回答