Sql-Server

ALTER TABLE 語句與 CHECK 約束衝突

  • January 15, 2018

我需要檢查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)

但我收到錯誤消息:

ALTER TABLE 語句與 CHECK 約束“date_check”衝突。衝突發生在數據庫“tp4”、表“dbo.Commande”中。

這怎麼可能發生?

錯誤消息是不言自明的:您的檢查約束正在嘗試強制執行中的所有值Datecom至少早於 1 天Datelivr,但您必須至少有一行不正確 - 要麼Datecom是同一天,要麼是之後,要麼其中一個值是NULL。使用以下命令查找這些行:

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

引用自:https://dba.stackexchange.com/questions/115637