Не с помощью клавиш, но вы можете установить триггер вставки / обновления, чтобы проверить, что (count(*) where primary=1 and employer_id=?) <= 1
.
Редактировать: На самом деле, я думаю, что есть способ: вы создаете вторую таблицу с employer_id
в качестве первичного ключа и вторым полем для его основного контакта. Таким образом, у вас есть эти 2 таблицы:
=================================== ================================
| maintable | | maincontacttable |
=================================== ================================
|employer_id|contact_id|...data...| |employer_id|primary_contact_id|
| PK | FK | | | PK FK | FK |
=================================== ================================
Не более primary
столбец. Поскольку employer_id
является ключом во второй таблице, вы можете иметь не более одной записи.
Вы получаете первичный контакт через левое внешнее соединение, и он возвращает либо первичный контакт, либо null
.