可以列到SQL Server中的现有表?

我已经有一个由数据组成的表格。 我需要修改表格以添加两个不为空的新列。 我该如何做,而不会丢失任何现有的数据?


以下是我尝试的方法(通过右键单击表并选择设计):

  • 添加了新列'EmpFlag'(bit,null),'CreatedDate'(datetime,null)

  • 更新表中的'EmpFlag'列,以获得一些有效值。 (只想在一个领域工作,所以我没有更新'CreatedDate'字段)

  • 现在右键单击表格,设计,并使其不为空。

  • 当我尝试保存时,出现此错误消息:

    不允许保存更改。 您所做的更改需要删除并重新创建以下表格


    您只需在新列中设置一个默认值,这将允许您添加它们。

    alter table table_name
        add column_name datetime not null
           constraint DF_Default_Object_Name default (getdate())
    

    或者这个用于varchar字段。

    alter table table_name
        add column_name varchar(10) not null
           constraint DF_Default_Object_Name default ('A')
    

    如果添加列后不需要,也可以删除默认值。

    alter table table_name
        drop constraint DF_Default_Object_Name
    

    如果您不想在列上放置默认值,您可以:

  • 创建新列为NULLable
  • 适当更新现有数据
  • 添加NOT NULL约束

  • 添加新的NOT NULL列与默认值可以在下面的GUI中完成。 将现有的更改为NOT NULL似乎是另一回事。 我收到了同样的信息。 一种选择是创建一个新的NOT NULL列,并使用默认值替换旧列,然后将旧列数据复制到新列数据。

  • 在设计视图中放置表格(右键单击表格 - >选择设计)
  • 添加列,选择数据类型
  • 取消选中允许空值并设置默认值或绑定=默认值,如下所示
  • 在这里输入图像描述

    链接地址: http://www.djcxy.com/p/76275.html

    上一篇: nullable columns to an existing table in SQL server?

    下一篇: Can I add a not null column without DEFAULT value