MySQL, kann verhindert werden, dass zwei Felder NULL oder NOT NULL sind?

MySQL, kann verhindert werden, dass zwei Felder NULL oder NOT NULL sind?

eine einfache Tabelle:

ID, NAME, POST_ID, GROUP_ID

entweder POST_ID oder GROUP_ID müssen gesetzt sein, aber nie beide, KEINES von beiden. Also,

Es gibt gültige Fälle:

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

und NICHT GÜLTIGE Fälle:

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

ist es möglich, solch komplizierte Einschränkungsregeln festzulegen?

Antwort1

Ich glaube nicht, dass das möglich ist. Ich würde solche Fälle im Frontend abfangen, wo der Benutzer die Daten eingibt. Außerdem können Sie vielleicht beide Felder durch zwei andere Felder ersetzen:

Ein categoryFeld vom Typ enummit den möglichen Werten „Post“ oder „Gruppe“. Ein referenceFeld, das die ID enthält.

Auf diese Weise können Sie einfach verlangen, dass beide nicht leer sind, und Sie können nur auf eine Post-ID oder eine Gruppen-ID verweisen.

verwandte Informationen