Я на MySQL 8 пытаюсь добавить проверочное ограничение:
ALTER TABLE `table` ADD CHECK (
(`column_a` IS NULL AND `column_b` IS NOT NULL) OR
(`column_a` IS NOT NULL AND `column_b` IS NULL)
);
, но я продолжаю получать эту ошибку :
Столбец 'column_b' нельзя использовать в проверочном ограничении 'table_chk_1': необходимо в ссылочном действии ограничения внешнего ключа 'table_ibfk_2'.
Я не могу найти ссылки на эту ошибку где-либо еще в rnet и я не понимаю, в чем проблема. И column_a
, и column_b
также являются внешними ключами для других таблиц, и они оба могут иметь значение NULL. Я просто хочу убедиться, что каждая строка в table
имеет ссылку через column_a
или через column_b
.
В чем причина этой ошибки?
Что я пробовал
Я пытался отбросить внешние ключи, добавить проверочные ограничения, и это удалось. Затем, если я добавлю внешний ключ обратно к column_b
, я все равно получу ту же ошибку.