如何添加NOT NULL列?

时间:2012-07-27 07:35:54

标签: visual-studio-2010 database-project

我开始使用数据库项目并在简单的任务中苦苦挣扎。如果我想添加一个NOT NULL的新列,如果表中已有数据,如何才能使其生效?

我曾经写过差异脚本,在这种情况下我会编写类似的东西:

-- ... ADD COLUMN X ... 
-- insert data into x
-- ... ALTER COLUMN X NOT NULL

我如何使用数据库项目处理此类案例?

任何tipps的Thx sl3dg3

3 个答案:

答案 0 :(得分:5)

我终于找到了两种可能的方法。简而言之:

  • 使用默认约束(由Rain建议)
  • 在部署后脚本中填写数据,删除default-constraint
  • 部署后,从源
  • 中删除default-constraint

或者

  • 将预部署脚本中的表数据备份到临时表中,从目标表中删除数据
  • 在部署后脚本中,将数据移回目标表,包括新NOT NULL - 列的新数据,删除表

在此处找到:http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/49bf2a88-d80d-4a9f-970e-728bd530332e/

或者在这里:http://blogs.msdn.com/b/bahill/archive/2009/03/30/managing-data-motion-during-your-deployments-part-1.aspx

两者都意味着额外的工作,我希望从这个常见案例的框架中获得更多支持。但至少可以这样做。

答案 1 :(得分:2)

您也可以从Publish DB对话框中指定列的DEFAULT值;进入Advanced-> Advanced Deployment Options并选中“Generate Smart Defaults”框。

从VS中的描述: 生成智能默认值:更新包含不允许空值的列的数据的表时自动提供默认值。

答案 2 :(得分:0)

您可以在创建列时通过提供一些默认值来添加非空列。