【发布时间】:2010-02-15 19:52:24
【问题描述】:
我已经有一个包含数据的表。我需要更改表以添加两个不为空的新列。如何在不丢失任何现有数据的情况下做到这一点?
这是我尝试过的(通过右键单击表格并选择设计):
添加了新列 'EmpFlag' (bit, null), 'CreatedDate' (datetime, 空)
更新了表中的“EmpFlag”列,使其具有一些有效值。 (只是想在一个领域工作,所以我没有更新“CreatedDate”字段)
现在右键单击表格,设计,并使其不为空。
当我尝试保存时,出现了这个错误信息:
不允许保存更改。 您所做的更改需要 以下表格将被删除并重新创建。
【问题讨论】:
-
我认为这是 SSMS 设计工具的限制。尝试使用 SQL 语句执行此操作:“alter table tablename alter column EmpFlag bit not null”。只需使用它运行一个新查询,并将表名更改为真实名称。
-
这与您所做更改的细节无关,而是反映了 SSMS 中的新默认行为 - 以防止人们在不知不觉中对大型生产表进行灾难性更改,这实际上会使它们脱机复制数据和重新填充表所需的时间。您可以关闭此选项工具 > 选项 > 设计器 > 表 + DB 设计器 > 防止保存更改...(取消选中此选项)。但是,对生产表进行这些更改时要非常小心。
标签: sql sql-server database