Мне нужно было удалить некоторые ограничения FK, чтобы удалить строку в таблице, но я хочу добавить ее обратно после удаления, но я получаю эту ошибку, когда пытаюсь добавить ее обратно в:
Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ...
Я знаю, эта ошибка возникает при попытке вставить соответствующий ключ, который не существует, но неясно, почему яполучить эту ошибку при попытке добавить ограничение обратно в таблицу?Это таблица сопоставления, так что, может быть, есть какая-то проблема с этим?
Вот исходная таблица:
CREATE TABLE `franchise_state` (
`franchise_id` int(11) NOT NULL,
`state_id` int(11) NOT NULL,
PRIMARY KEY (`franchise_id`,`state_id`),
KEY `fk_state_id_franchise_state` (`state_id`),
CONSTRAINT `fk_franchise_id_franchise_state` FOREIGN KEY (`franchise_id`) REFERENCES `franchise` (`franchise_id`),
CONSTRAINT `fk_state_id_franchise_state` FOREIGN KEY (`state_id`) REFERENCES `states` (`state_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Затем я запустил этот оператор таблицы изменения:
alter table franchise_state drop foreign key fk_franchise_id_franchise_state
Теперь таблица выглядит следующим образом:
CREATE TABLE `franchise_state` (
`franchise_id` int(11) NOT NULL,
`state_id` int(11) NOT NULL,
PRIMARY KEY (`franchise_id`,`state_id`),
KEY `fk_state_id_franchise_state` (`state_id`),
CONSTRAINT `fk_state_id_franchise_state` FOREIGN KEY (`state_id`) REFERENCES `states` (`state_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Хорошо, в этот момент я удаляю строку в таблице франшизы (и удаляю все соответствующие строки franchise_id в franchise_state) и пытаюсь снова установить ограничение следующим образом:
ALTER TABLE franchise_state ADD CONSTRAINT fk_franchise_id_franchise_state FOREIGN KEY (franchise_id) REFERENCES franchise(franchise_id);
Но, как указано в начале, я получаю «Невозможно добавить или обновить дочернюю строку: чужую ...» ??