了解 Oracle 中的 ON DELETE NO ACTION

Understanding ON DELETE NO ACTION in Oracle

我在 table SRS_INST_CODESRS_INSTRUMENT 之间有一个引用完整性约束。我使用以下查询找到了 ON DELETE 规则:

 SELECT a.table_name, c.delete_rule, c_pk.table_name parent_table
 FROM all_cons_columns a, 
 all_constraints c,
 all_constraints c_pk
 WHERE  a.owner = c.owner
 AND a.constraint_name = c.constraint_name
 AND c.r_owner = c_pk.owner
 AND c.r_constraint_name = c_pk.constraint_name
 AND c.constraint_type = 'R'
 AND a.table_name = 'SRS_INST_CODE';

输出为:

SRS_INST_CODE   NO ACTION   SRS_INSTRUMENT

但是我可以从 SRS_INSTRUMENT 中删除,即使 SRS_INST_CODE 中有记录引用了已删除的记录。 SRS_INST_CODE 中的记录也被删除。我希望 ON DELETE CASCADE 而不是 ON DELETE NO ACTION 是这种情况。我错过了什么?

如果您通过简单的 DELETE DML 查询删除记录,
那么这种行为最可能的原因是在 SRS_INSTRUMENT 上触发,从 SRS_INST_CODE
中删除相应的记录 您可以通过以下查询进行检查:

SELECT * FROM user_triggers WHERE table_name = 'SRS_INSTRUMENT';