ALTER TABLE 语句与 CHECK 约束冲突

Kha*_*l B 7 sql-server constraint alter-table ddl sql-server-2012

我需要检查datecom小于datelivr

create table Commande
(
Numcom int identity primary key,
Datecom date,
Datelivr date,
Codecli int foreign key references clients (Codecli) 
)

alter table Commande 
    add constraint date_check check(datediff(day,Datecom,Datelivr) > 0)
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

ALTER TABLE 语句与 CHECK 约束“date_check”冲突。冲突发生在数据库“tp4”,表“dbo.Commande”中。

这怎么会发生?

Aar*_*and 8

错误消息是不言自明的:您的检查约束试图强制执行中的所有值Datecom至少早于 一天Datelivr,但您必须至少有一行不正确 - 要么Datecom是同一天,要么是之后其中一个值是NULL。使用以下方法查找这些行:

SELECT Numcom, Datecom, Datelivr
FROM dbo.Commade
WHERE datediff(day,Datecom,Datelivr) <= 0
  OR Datecom IS NULL
  OR Datelivr IS NULL;
Run Code Online (Sandbox Code Playgroud)