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 поле, содержащее идентификатор.

Таким образом, вы можете легко потребовать, чтобы оба были непустыми, и вы можете ссылаться только на идентификатор сообщения или идентификатор группы.

Другие вопросы по тегам