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 category
campo do tipo enum
com valores possíveis 'post' ou 'group' Um reference
campo 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.