Postgresql: нарушает ограничение проверки - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблема с нарушением проверочного ограничения.Мне не удалось ее решить, ошибка заключается в следующем:

Причина: org.postgresql.util.PSQLException: ОШИБКА: новая строка для отношения "project_employee" нарушает проверочное ограничение "ck_pe_overlap" Detail: Failing rowсодержит (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", происходит ошибка.

...