将不可为空的列添加到SQL Server中的现有表?

我已经有一个由数据组成的表格。 我需要改变表添加两个不是null的新列。 我怎么做,而不会丢失任何现有的数据?


这是我尝试的(通过右键单击表并selectdevise):

  1. 添加了新的列“EmpFlag”(位,空),“CreatedDate”(date时间,空)

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

  3. 现在右键单击表,devise,并使其不为空。

当我试图保存时,出现这个错误信息:

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

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

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 

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

  1. 创build新的列为NULLable
  2. 适当更新现有数据
  3. 添加NOT NULL约束

添加新的NOT NULL列与默认值可以在下面的GUI中完成。 改变一个现有的NOT NULL似乎是一个不同的故事。 我收到了同样的信息。 一种select是创build一个新的NOT NULL列,用默认值replace旧列,然后将旧列数据复制到新列数据。

  1. 在devise视图中放置表格(右键单击表格 – >selectdevise
  2. 添加列,select数据types
  3. 取消勾选Allow Nulls并设置默认值或Binding =默认值如下

在这里输入图像说明