2012-02-21 108 views
0

我有一个包含选项卡画布的表单。Oracle Forms - Master - Detail问题

在第二个画布页面上,我有两个数据块和主细节关系。

第一嵌段(主)由表(table_one)具有以下字段从动:

sf_id (PK) 
sf_code - VARCHAR2(40) 
sf_desc - VARCHAR2(250) 

第二块(细节)是重复块由一个表(table_two)驱动具有以下字段:

error_code - VARCHAR2(40 
error_code_desc - VARCHAR2(250) 
is_major_error - VARCHAR2(1) 
error_type - VARCHAR2(1) 
error_is_active - VARCHAR2(1) 
update_date - DATE 
sf_id (FK - table_one.sf_id) 

第二个块只显示error_code和error_code_desc。此画布页面的要点是添加/删除主记录并将详细记录与主人关联。我从来不想实际插入或删除表2中的记录;只是更新表2中的sf_id列。

我想实现如下:

  1. 同时创建详细记录的主记录。

  2. 删除主记录

  3. 添加和删除详细记录

到细节块的插入无非是通过更新sf_id列有详细记录的主记录相关联,更表二。从detail块中删除只不过是将表2中的sf_id列设置为null。我实际上并没有在table_two中添加或删除记录。这有意义吗?

我试着覆盖第二块上的提交来执行更新,而不是实际尝试将新记录插入到table_two中的Oracle。

回答

1

尝试覆盖您的详细块的触发器ON-INSERT。确保它是一个完整的覆盖,而不是在之前或之后触发。然后做你的更新,而不是默认的插入过程。

+0

谢谢。这与我的结论是一样的。 “你的意思是”确保它是一个完整的覆盖,而不是在之前或之后发生火灾“。我怎样才能确保它是一个完整的覆盖?你认为插入和更新触发器本身就是危险的吗? – Eric 2012-02-21 20:26:38

+1

将触发器添加到块时,其属性之一是“执行层次结构”,应将其设置为“覆盖”。 – GriffeyDog 2012-02-21 21:47:16

+0

不,在我看来,它们不像其他任何触发器那样具有内在的危险性。 – GriffeyDog 2012-02-21 21:48:36