mysql数据传输完整性_mysql – 处理数据库完整性
我正在使用innodb約束在我的應(yīng)用程序的下一個版本中引入數(shù)據(jù)庫完整性.一切順利,但我的一些表有記錄與刪除的引用(死記錄),因為他們我不能添加約束到表.
我在嘗試:
ALTER TABLE `article` ADD FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON DELETE CASCADE;
我得到:
#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)
運(yùn)行此查詢,我發(fā)現(xiàn)超過500條記錄沒有引用(作者被刪除,但他們的文章仍然存在):
SELECT `articles`.`id`
FROM `articles` LEFT JOIN `authors` ON `articles`.`author_id` = `authors`.`id`
WHERE ISNULL(`authors`.`id`);
所以,在我添加約束之前,我必須處理這些問題.如何刪除使用上述查詢獲得的所有記錄?
我試過了:
DELETE FROM `articles` WHERE `id` IN (
SELECT `articles`.`id`
FROM `articles` LEFT JOIN `authors` ON `articles`.`author_id` = `authors`.`id`
WHERE ISNULL(`authors`.`id`);
)
但是mysql響應(yīng):
You can't specify target table 'articles' for update in FROM clause
任何有關(guān)這方面的幫助將不勝感激.
總結(jié)
以上是生活随笔為你收集整理的mysql数据传输完整性_mysql – 处理数据库完整性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南航将重新推出“随心飞”产品:不限年龄无
- 下一篇: java多态和继承_Java学习--继承