MySQL, возможно, чтобы два поля были пустыми или не пустыми?
Простая таблица:
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
Можно ли установить такое сложное правило ограничения?
1 ответ
Я не думаю, что это возможно. Я бы поймал такие случаи во внешнем интерфейсе, где пользователь вводит данные. Кроме того, вы можете заменить оба поля двумя другими:
category
поле типа enum
с возможными значениями 'post' или 'group'
A reference
поле, содержащее идентификатор.
Таким образом, вы можете легко потребовать, чтобы оба были непустыми, и вы можете ссылаться только на идентификатор сообщения или идентификатор группы.