2012-12-05 29 views
1

因此基本上在我的數據庫中,我有一個存儲應用程序的表。這些應用程序具有用戶可以從下拉菜單更改爲例如邀請成功進行面試或應用程序的狀態。我還有一個表格,當每個應用程序的狀態發生變化時以及更改的內容都需要存儲。我想這樣做的方式是我在Oracle Application Express上有一個表單,用於顯示某些應用程序。然後他們可以點擊一個編輯按鈕來改變它的狀態。當按下提交按鈕時,我希望它更新應用程序表中的狀態,但還會在歷史記錄表中創建一個新條目,並將狀態值更改爲其值並將其更改爲其日期。我是否會爲此使用觸發器,或者是否有另一種在Oracle Application Express上執行的方式?任何幫助,將不勝感激。在Oracle Application Express的按鈕上單擊值插入2個表中

回答

1

你也可以做。哪個更合適取決於你的情況。

  1. 如果歷史表僅僅是記錄所有更改申請表日誌表,我會坦然面對上插入到歷史表申請表的簡單觸發器。但是,您需要檢查您的環境中是否允許觸發器(一些DBA不喜歡它們)。缺點是可以禁用觸發器 - 這將意味着您的歷史記錄表不會被更新,並且您的應用程序不會意識到它無法正常工作 - 用戶將無法獲得任何錯誤。優點是無論哪個應用程序正在更新應用程序表(無論是Apex還是某個其他客戶端),歷史記錄表都將保留。

  2. 您可以在提交頁面時運行一個或多個PL/SQL進程,並且可以在其中放置任意PL/SQL - 例如,更新應用程序狀態,然後插入到歷史記錄表中。這樣做的好處是,代碼可以成功運行,或者因爲錯誤而失敗,所以您知道歷史記錄將與應用程序表同步。這樣做的缺點是邏輯在您的前端代碼中編碼,因爲它是;如果您的公司決定編寫另一個更新應用程序表的接口,則可能不會插入歷史記錄(或未以相同的方式插入)。

  3. 編寫應用程序狀態更改的包裝過程,它執行這兩個操作;並從您的Apex PL/SQL過程調用此過程。這樣該程序可以被其他系統重用(如果需要的話)。

相關問題