простая таблица:
ID, NAME, POST_ID, GROUP_ID
либо POST_ID, либо GROUP_ID должны быть установлены, но ни в коем случае не оба, НИ НИ ОДИН из них. Так,
есть допустимые случаи:
ID, NAME, POST_ID, GROUP_ID
x, y, 1, NULL
x, y, NULL, 4
и НЕ ДЕЙСТВИТЕЛЬНЫЕ случаи:
ID, NAME, POST_ID, GROUP_ID
x, y, NULL, NULL
x, y, 4, 4
можно ли установить такое сложное правило ограничения?
Я не думаю, что это возможно. Я бы такие случаи отлавливал в интерфейсе, где пользователь вводит данные. Кроме того, вы можете заменить оба поля двумя другими полями:
А category
поле типа enum
с возможными значениями 'post' или 'group' A reference
поле, содержащее идентификатор.
Таким образом, вы можете легко потребовать, чтобы оба были непустыми, и вы могли ссылаться только на идентификатор сообщения или идентификатор группы.