MySQL限制删除

MySQL limiting delete

一部电影在 table 库存中有多个实例,我正试图从 table 电影中仅删除一部具有给定标题的电影。这是我目前的查询,但它会返回一个错误:

DELETE FROM inventory
WHERE film_id IN (SELECT film_id
                  FROM film
                  WHERE title = "ACADEMY DINOSAUR")
AND store_id = 1
LIMIT 1

我收到这个错误:

Cannot delete or update a parent row: a foreign key constraint fails

Film table values image

Inventory table values image

任何帮助将不胜感激,谢谢

产生的错误与删除或限制无关,而是一个名为 foreign_key_checks 的系统变量。可以通过在您的语句之前添加一行并在语句之后添加另一行来更改它。根据您的使用情况,您可能想要研究禁用它的缺点,即添加与外键冲突的数据,但这将阻止 that 错误的发生:

SET foreign_key_checks = 0;
DELETE FROM inventory
WHERE film_id IN (SELECT film_id
                  FROM film
                  WHERE title = "ACADEMY DINOSAUR")
AND store_id = 1
LIMIT 1
SET foreign_key_checks = 1;