Ограничение на postgresql - PullRequest
       28

Ограничение на postgresql

1 голос
/ 10 марта 2020

Привет! У меня есть таблица квитанций (Id, итог, дата выпуска, статус, оператор) и таблица Employee (ID, ID оператора, ...).

Мне нужно определить следующее ограничение:

Оператор не может иметь более одной активной квитанции (статус) одновременно в день.

Это мое ограничение:

ALTER TABLE Receipt
ADD CONSTRAINT uniquenessScontrinoAttivo
CHECK (NOT EXISTS (SELECT I.ID, S. Date, COUNT (S.Id) AS Count
FROM Receipt as S NATURAL JOIN Employee
WHERE S.Status = 'Active'
GROUP BY I.ID, S.Date
HAVING Count> 1));

Данная ошибка связана с тем, что подзапрос не может существовать. Это ограничение я попытался вставить в таблицу Receipt, щелкнув по ограничению и указав при проверке все, что написано выше.

1 Ответ

2 голосов
/ 10 марта 2020

Если я следил за вами правильно, вы можете использовать для этого частичный уникальный индекс:

create unique index unique_active_receipt
on receipt (operator, date)
where status = 'active';
...