我有一个违反检查约束的问题。我无法解决 错误是这个
由以下原因引起:org.postgresql.util.PSQLException:错误:关系“ project_employee”的新行违反了检查约束“ ck_pe_overlap” 详细信息:失败行包含(95,96,1390,2019-01-01,2019-02-28,100,ON_PROJECT,203,NO)。
我的检查约束是这个
CONSTRAINT ck_pe_overlap
CHECK (check_periods_overlap(employee_id, project_id, start_date, end_date) = 0::bit(1));
所以我在StackOverflow中看到了几乎一个类似的问题,我对它们进行了深入研究,但仍然找不到错误的地方。我对Postgres很陌生,对此我不太了解。
我的桌子是这个
Employee_id Project_id Project_ Employee_id Start_date End_date occupied status Role_id key
"47" "96" "1440" "2019-04-07" "2019-04-30" 100 "ON_PROJECT" "3" "NO"
此新约束不允许添加在数据库级别重叠的间隔。
我们可以删除此约束,但是我认为该约束很有用,因为它不会让数据库包含错误的数据。 这种**约束**不允许时间间隔崩溃,例如 对于记录,我选择日期:1 / 2019-1 / 2019(表示它在同一月开始和结束),可以,但是我尝试为此记录添加一个新的间隔1 / 2019-2 / 2019)对于相同的Employee_id“ 47”和Project_id“ 96”,会发生错误。