2012-02-21 65 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