如何在SQL Server中添加检查约束?

时间:2015-08-26 08:00:39

标签: sql-server

我有一个列BirthDate(date, null)的表格。

我尝试在设计器BirthDate >= 'January 1, 1980'中添加检查约束但出现错误:

  

无法添加约束' CK_MyTable'。
  ALTER TABLE语句与CHECK约束" CK_MyTable"冲突。冲突发生在数据库" MyDb",table" dbo.MyTable",column' BirthDate'。

当我尝试使用此T-SQL脚本添加约束时:

ALTER TABLE dbo.MyTable 
ADD CONSTRAINT BirthDate CHECK (BirthDate >= 'January 1, 1900');

我得到了同样的错误。

出了什么问题?

2 个答案:

答案 0 :(得分:2)

您不能在表格中存在违反约束的现有行。您可以通过

解决此问题
  1. 删除它们

     E List          K List
     LMON            LMPN
     LMON            LMPN
     LMON
     PLLM
     PLLM
    

  2. 更新现有行

    DELETE FROM dbo.MyTable WHERE BirthDate < '1980-01-01'
    

答案 1 :(得分:0)

试试这个

ALTER TABLE dbo.MyTable 
ADD CONSTRAINT BirthDate WITH NOCHECK CHECK (BirthDate >= 'January 1, 1900');

除极少数情况外,我们不建议这样做。

Unsure of WITH CHECK clause when adding a constraint