MySQL, é possível evitar que dois campos sejam NULL ou NOT NULL?

MySQL, é possível evitar que dois campos sejam NULL ou NOT NULL?

uma tabela simples:

ID, NAME, POST_ID, GROUP_ID

POST_ID ou GROUP_ID devem ser definidos, mas nunca ambos, NEM nenhum deles. Então,

existem casos válidos:

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

e casos NÃO VÁLIDOS:

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

é possível definir uma regra de restrição tão complicada?

Responder1

Eu não acho que seja possível. Eu pegaria esses casos no front-end, onde o usuário insere os dados. Além disso, talvez você possa substituir ambos os campos por dois outros campos:

Um categorycampo do tipo enumcom valores possíveis 'post' ou 'group' Um referencecampo contendo o ID.

Dessa forma, você pode facilmente exigir que ambos não estejam vazios e só possa fazer referência a um ID de postagem ou a um ID de grupo.

informação relacionada