Моя схема таблицы:
r(int aID not null, int bID not null, bool main)
Первичный ключ (aId, bID). И aID, и bID являются внешними ключами (ссылаются на разные таблицы).
Я хочу обеспечить, чтобы для каждого идентификатора aID всегда была одна и только одна заявка bid, которая также main = true.
Как я могу сделать это на уровне БД?
Я могу принудительно установить «max 1», добавив constraint unique (aID, main)
, и main имеет значение true или NULL.
Как насчет "хотя бы 1" части?
PS: работает на MySQL.
Редактировать: пример данных для уточнения:
Вы можете иметь различные комбинации aID и bID, но для каждого aID только одна комбинация должна иметь main = true.
Демо-данные:
1, 2, true
1, 3, NULL
1, 4, NULL
1, 5, true <- wrong, only one main=true
...