我有一个带有一些外键的数据库,这些外键没有配置ON DELETE CASCADE
;如果可能,我想避免更改此设置。同样,我们的JPA关系也未配置为cascade = CascadeType.REMOVE
。
是否仍可以“级联模式”删除实体,即自动为其子代生成所有必要的删除查询?
理想情况下,我想通过JPA进行此操作,但是原始SQL查询也可以。主要问题在于,并非所有(但大多数)外键约束都反映在JPA关系中,例如OneToOne
,OneToMany
等。
您只需为要级联的表编写delete语句。
CREATE TRIGGER trigger_name
BEFORE DELETE
ON table_name FOR EACH ROW
BEGIN
DELETE FROM some_child_table WHERE some_fk_field IN (SELECT some_id FROM some_Table);
DELETE FROM some_table;
END;