SQL как добавить внешний ключ при удалении устаревших строк - PullRequest
0 голосов
/ 17 декабря 2018

Я управляю примерно двадцатью базами данных mysql интернет-магазина на Magento, но я только что понял, что на каком-то внешнем ключе не хватало 250 таблиц!Мне удалось сгенерировать команды sql для добавления внешнего ключа, например

ALTER TABLE 'catalog_category_entity_datetime' 
ADD FOREIGN KEY ('entity_id') REFERENCES 'catalog_category_entity' ('entity_id') 
    ON DELETE CASCADE 
    ON UPDATE CASCADE;

, но выполнение sql завершилось неудачно, поскольку во всех таблицах есть устаревшие строки, я знаю, что могу сделать это вручную с помощью другой команды sql длякаждая таблица похожа на

DELETE FROM 'catalog_category_entity_datetime' 
where 'entity_id' NOT IN(select 'entity_id' from 'catalog_category_entity');

, но это больно и очень опасно, если в таблицу попадает ошибка.

Я хочу знать, есть ли команда для внешнего ключа, например для уникального индекса

ALTER IGNORE TABLE tmp_table ADD UNIQUE INDEX dupidx (field);

что удаляет устаревшие строки перед добавлением внешнего ключа?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...