sql - 其他表有外键时如何删除表内行

标签 sql oracle foreign-keys constraints

这是我的表:(我正在使用 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';

但是,它显示了违反完整性约束的错误-找到子记录

我该如何解决这个问题? 谢谢!

最佳答案

这取决于您要对 inventory 表中的记录做什么。

例如,您可以修改您的约束并添加删除级联,这样该记录将与其他记录一起删除。

CONSTRAINT fk_column
     FOREIGN KEY (column1, column2, ... column_n)
     REFERENCES parent_table (column1, column2, ... column_n)
     ON DELETE CASCADE

或者您设置on delete set null 这样 fk 将被设置为 null

CONSTRAINT fk_column
     FOREIGN KEY (column1, column2, ... column_n)
     REFERENCES parent_table (column1, column2, ... column_n)
     ON DELETE SET NULL

关于sql - 其他表有外键时如何删除表内行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494986/

相关文章:

oracle - 如何动态查看PL/SQL中变量的类型?

sql - 使用 GROUP BY 汇总统计数据的 Oracle SQL 查询

sql - 更改具有外键的表(sql server)中的记录?

sql - 查找时间戳间隔 > 15 分钟的连续记录

sql - 如何在简单的三向关系上实现基于约束的参照完整性

sql - 在SSIS中导入已合并单元格的Excel

oracle - 将 Oracle CLOB 字段设置为 null 失败,出现 ORA 22275

php - MySQL、PHP多对多关系

mysql - SQL:按foreign_key数字列表排序

java - persistence.xml 中的数据库模式名称