Ограничение на ограничение количества значений до одного на группу - PullRequest
0 голосов
/ 27 июня 2019

У меня есть таблица с Employee_ID, Position_ID и Active_Status.Employee_ID и Position_ID являются внешними ключами и комбинированным ключом в этой таблице.Сотрудник может занимать несколько должностей, но он никогда не должен занимать более одной активной должности в любой момент времени.Есть ли ограничение, которое может достичь этого ограничения?

Ясно неверный код ниже, но что-то вроде

CONSTRAINT chkStatus CHECK ((SELECT COUNT(ACTIVE) FROM EMPLOYEE_DETAIL WHERE ACTIVE = 'Y' GROUP BY EMPLOYEE_ID) = 1)

1 Ответ

1 голос
/ 28 июня 2019

Многострочные проверочные ограничения (или утверждения) не поддерживаются ни одной крупной СУБД.

Утверждения SQL / Декларативные многострочные ограничения


Вместо этого вы можете использовать фильтрованный / частичный UNIQUE индекс:

CREATE UNIQUE INDEX idx ON EMPLOYEE_DETAIL(Employee_id) WHERE ACTIVE = 'Y';

Уникальные частичные индексы

Частичное определение индекса может включать ключевое слово UNIQUE. Если это так, то SQLite требует, чтобы каждая запись в индексе была уникальной. Это обеспечивает механизм для обеспечения уникальности для некоторого подмножества строк в таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...