当我删除主块 oracle 表单时如何删除所有详细信息块

How to delete all detail block when i delete master block oracle forms

当我从 Master Block 中删除一条记录时,它应该删除 Block Details 中的所有记录....但这并没有发生在我身上...此消息出现 "frm-40510: ORACLE error unable to DELETE record"。

我按下了 shift + f1 这条信息出现了:

SQL 语句错误:DELETE FROM tableName WHERE ROWID=:1

错误ORA-02292: integrity constraint (schemaName.C_NO_FK) violated - child record found.

这是我的删除按钮代码

DECLARE
   v_id      NUMBER := :CUSTOMERS.C_NO;
   v_alert   NUMBER;
BEGIN
   SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', enabled, property_true);
   SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', update_allowed, property_true);
   SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', navigable, property_true);

   IF v_id IS NOT NULL
   THEN
      v_alert := SHOW_ALERT ('DEL_ALERT');

      IF v_alert = alert_button1
      THEN
         GO_BLOCK ('CUSTOMERS');
         DELETE_RECORD;
         :SYSTEM.message_level := 25;
         COMMIT;
         :SYSTEM.message_level := 0;
         MESSAGE ('deleted');
      END IF;
   ELSE
      MESSAGE ('choose one record to delete it');
      MESSAGE ('choose one record to delete it');
      GO_ITEM ('btnsrch');
   END IF;
   GO_ITEM ('btnsrch');
   SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', enabled, property_false);

   exception when others then
    message(sqlerrm);
END;

我想使用 delete_record; 而不是 delete 语句 delete form detailTable where …

然后 delete form masterTable where ……. 这工作正常但不是 delete_record;

非常简单,只需转到主块中的关系并按 F4 并将 "Delete Record Behavior" 属性 设置为 "Cascading"。