【问题标题】:The default value of column is missing when using 'select into table' to copy table in sql server在sql server中使用'select into table'复制表时缺少列的默认值
【发布时间】:2013-04-30 21:41:41
【问题描述】:

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

那么,我怎样才能保持默认值设置呢?任何线索?谢谢。

【问题讨论】:

    标签: sql-server default-value select-into


    【解决方案1】:

    我不想把它告诉你,但这不是唯一缺少的东西。我假设 “默认值设置” 实际上是指默认约束,即 Specify Default Values for ColumnsDefaults

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

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

    考虑到这种情况会更有意义

    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 之后甚至可能不是唯一的)!?当然,您正在考虑单个表(直接克隆)的场景,但这确实是通用功能的一个非常具体的用例。

    【讨论】:

    • 坏消息..我没有意识到使用“选择进入”时缺少很多东西。无论如何,默认约束是我的主要问题,因为源表非常简单,是的,我们正在直接克隆。
    • 您应该只使用 SSMS,查找表并开始为所有子约束和索引对象生成创建脚本。
    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2014-07-08
    • 2015-08-04
    相关资源
    最近更新 更多