2 столбца, указывающие на одно и то же внешнее поле
У меня есть таблица MySQL messages
с этими полями: id
, parent
, profesor
, message
,
parent
а также profesor
оба являются пользователями и хранятся в user
Таблица (id
, name
, last name
)
Итак, я создал таблицу в phpMyAdmin, а затем я написал:
alter table messaged add foreign key (profesor) references user (id)
и работал отлично! когда я делаю то же самое для родителя, я получаю эту ошибку:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`school`.`#sql-1e30_fe`, CONSTRAINT `#sql-1e30_fe_ibfk_2` FOREIGN KEY (`parent`) REFERENCES `user` (`id`))
Что я делаю не так?
1 ответ
Решение
У вас есть какие-либо данные в таблице сообщений? Если это так, все поля messages.parent должны быть заполнены соответствующими значениями user.id, в противном случае вы получите эту ошибку.
Вы можете проверить не ограничивающие строки этим запросом:
SELECT id, parent FROM messages WHERE parent NOT IN
(SELECT id FROM user)