PostgreSQL:违反检查约束

时间:2019-02-07 11:21:53

标签: postgresql check-constraints

我有一个违反检查约束的问题。我无法解决 错误是这个

  

由以下原因引起: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"

The similar question

此新约束不允许添加在数据库级别重叠的间隔。

我们可以删除此约束,但是我认为该约束很有用,因为它不会让数据库包含错误的数据。 这种**约束**不允许时间间隔崩溃,例如 对于记录,我选择日期:1 / 2019-1 / 2019(表示它在同一月开始和结束),可以,但是我尝试为此记录添加一个新的间隔1 / 2019-2 / 2019)对于相同的Employee_id“ 47”和Project_id“ 96”,会发生错误。

0 个答案:

没有答案