【发布时间】:2019-04-03 12:16:39
【问题描述】:
这是我的表:(我使用的是 Oracle SQL)
FILM (Catalog_Num, Format, Title, Year, Number_Discs, Rating, Timing, Genre)
INVENTORY (Film_ID, Rental_Price, New, Date_In, Catalog_Num@, Store_Num@)
现在我想删除电影年份超过 2015 年的行, 所以我写了:
delete from film
where catalog_num in(
select catalog_num
from film join inventory using (catalog_num)
where year >'2015';
但是,它显示了违反完整性约束的错误-找到了子记录
我该如何解决这个问题? 谢谢!
【问题讨论】:
-
删除其他表中依赖于这些键的行
-
最好的方法是使用 CASCADE DELETE 功能。 techonthenet.com/oracle/foreign_keys/foreign_delete.php
-
@AbhijithNagarajan - 仅适用于“最佳”的某些值。对于许多人来说,外键的一个主要好处是它们可以防止我们意外删除具有相关记录的行。
-
@APC,我完全同意。
CASCADE DELETE最适合仅在没有父母的情况下孩子没有存在的父子关系中。
标签: sql oracle foreign-keys constraints