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

我認為這是不可能的。我會在用戶輸入資料的前端捕獲此類情況。此外,您也許可以將這兩個欄位替換為其他兩個欄位:

可能值為「post」或「group」category類型的欄位包含ID 的欄位。enumreference

這樣您就可以輕鬆要求兩者都非空,並且只能引用帖子 ID 或群組 ID。

相關內容