MySQL, ¿es posible evitar que dos campos sean NULL o NO NULL?

MySQL, ¿es posible evitar que dos campos sean NULL o NO NULL?

una tabla sencilla:

ID, NAME, POST_ID, GROUP_ID

Se debe configurar POST_ID o GROUP_ID, pero nunca ambos, NI ninguno de ellos. Entonces,

hay casos válidos:

ID, NAME, POST_ID, GROUP_ID
x,   y,   1,       NULL
x,   y,   NULL,    4

y casos NO VALIDOS:

ID, NAME, POST_ID, GROUP_ID
x,   y,   NULL,    NULL
x,   y,   4,       4

¿Es posible establecer una regla de restricción tan complicada?

Respuesta1

No creo que sea posible. Detectaría estos casos en la interfaz donde el usuario ingresa los datos. Además, quizás puedas reemplazar ambos campos con otros dos campos:

Un categorycampo de tipo enumcon posibles valores 'post' o 'group' Un referencecampo que contiene el ID.

De esa manera, puede exigir fácilmente que ambos no estén vacíos y solo puede hacer referencia a una ID de publicación o una ID de grupo.

información relacionada