MySQL, возможно ли предотвратить то, чтобы два поля были NULL или NOT NULL?

MySQL, возможно ли предотвратить то, чтобы два поля были NULL или NOT NULL?

простая таблица:

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

Я не думаю, что это возможно. Я бы отлавливал такие случаи в front-end, где пользователь вводит данные. Также, возможно, вы можете заменить оба поля двумя другими полями:

Поле categoryтипа enumс возможными значениями «post» или «group». referenceПоле, содержащее идентификатор.

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

Связанный контент