Lidando com a integridade do banco de dados

Estou introduzindo a integridade do banco de dados usando restrições innodb na próxima versão do meu aplicativo. Tudo corre bem, mas algumas de minhas tabelas possuem registros com referências excluídas (registros mortos) e, por causa deles, não consigo adicionar restrições à tabela.

Eu estou tentando:

ALTER TABLE `article` ADD FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON DELETE CASCADE;

E eu recebo:

#1452 - Cannot add or update a child row: a foreign key constraint fails (`books`.<result 2 when explaining filename '#sql-442_dc'>, CONSTRAINT `#sql-442_dc_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON DELETE CASCADE)

Ao executar esta consulta, descobri que mais de 500 registros não têm referências (os autores foram excluídos, mas seus artigos permaneceram):

SELECT `articles`.`id`
FROM `articles` LEFT JOIN `authors` ON `articles`.`author_id` = `authors`.`id`
WHERE ISNULL(`authors`.`id`);

Portanto, antes que eu possa adicionar uma restrição, devo lidar com isso.Como excluo todos os registros que recebo usando a consulta acima?

Eu tentei:

DELETE FROM `articles` WHERE `id` IN (
  SELECT `articles`.`id`
  FROM `articles` LEFT JOIN `authors` ON `articles`.`author_id` = `authors`.`id`
  WHERE ISNULL(`authors`.`id`);
)

Mas o mysql responde:

You can't specify target table 'articles' for update in FROM clause

Qualquer ajuda sobre isso será muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion