删除主块oracle表单时如何删除所有细节块

Posted

技术标签:

【中文标题】删除主块oracle表单时如何删除所有细节块【英文标题】:How to delete all detail block when i delete master block oracle forms 【发布时间】:2020-05-22 21:34:55 【问题描述】:

当我从主块中删除一条记录时,它应该删除块详细信息中的所有记录....但这不会发生在我身上...此消息出现“frm-40510:ORACLE 错误无法删除记录” .

我按了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;

【问题讨论】:

您的代码是正确的,没有任何内容。但是您需要将关系属性删除记录行为更改为级联。就是这样。 【参考方案1】:

非常简单,只需转到主块中的关系并按 F4 并将“删除记录行为”属性设置为“级联”。

【讨论】:

感谢您的回答。我在哪里可以找到该主块中的关系?

以上是关于删除主块oracle表单时如何删除所有细节块的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?

如何完全删载与清除oracle 10grac cluster

如何从 Nim 的主块返回退出代码?

如何彻底删除oracle创建的用户和表空间

oracle 如何恢复误删的表记录数据

win7如何强制删除oracle安装文件并彻底卸载