會通資訊|ArgoERP 提供全方位數位化轉型方案|立即諮詢相關資訊!
關於Argo
企業解決方案
產品架構
ArgoERP
基本管理模組
電子傳簽管理模組
多公司別集團管理系統
進銷存管理系統
財務管理系統
生產管理系統
預算管理系統
專案管理系統
擴充應用
ArgoHR 人力資源管理系統
ArgoMES 製造執行系統
ArgoRMA/FAE 保固/報修派遣
ArgoSQM 供應商評鑑暨進料檢驗
ArgoTX 台灣保稅管理系統
ArgoGIB 合同核銷管理系統
ArgoCFV 碳盤查平台
雲端行動
Portal
ArgoQR
App行動應用
分析應用
Portal-II
客戶案例
課程講座
最新資訊
最新消息
電子報文章
Dr.ERP
財務管理
進銷存管理
電子發票
智慧製造
聯絡我們
客服系統
首頁
關於Argo
企業解決⽅案
產品架構
ArgoERP
基本管理模組
電子傳簽管理模組
多公司別集團管理系統
進銷存管理系統
財務管理系統
生產管理系統
預算管理系統
專案管理系統
擴充應用
ArgoHR 人力資源管理系統
ArgoMES 製造執行系統
ArgoRMA/FAE 保固/報修派遣
ArgoSQM 供應商評鑑暨進料檢驗
ArgoTX 台灣保稅管理系統
ArgoGIB 合同核銷管理系統
ArgoCFV 碳盤查平台
雲端行動
Portal
ArgoQR
App行動應用
分析應用
Portal-II
客戶案例
課程講座
最新資訊
聯絡我們
客服系統
聯絡我們
服務專線
電話 02-2521-2589
留言諮詢
TOP
TOP
首頁
最新資訊
深入探究 COMPOUND TRIGGER
Aug. 1 2022
深入探究 COMPOUND TRIGGER
作者:Sean
在先前七月份電子報文章「淺談Oracle資料庫觸發器」當中,我們初步介紹了Oracle觸發器,可以了解有兩種形式Row Trigger (逐列觸發) 與 Statement Trigger (敘述語句觸發)。觸發器看似方便,卻也是開發團隊的雙面刃,一來容易造成維護成本增加,二來開發時要注意避免觸發器的工作會觸發另一個觸發器,進而造成難以追蹤的連鎖效應,對資料庫造成效能上的影響。
在實務面上,我們管理財務資料沖銷時,須注意沖銷金額是否大於立帳金額,又必須做到即時且全面管控時,常常仰賴觸發器的協助,需要逐列觸發,又需要針對表格進行DML,此時會發現Row Trigger (逐列觸發) 與 Statement Trigger (敘述語句觸發)受限於Oracle DB本身開發上限制,兩者無法共存,使得開發者必須將兩者分開撰寫與獨立管理。
然而Oracle 11G 提供了一項便捷的觸發器,Compound Trigger,又可稱做複合式觸發器。此功能既是Row Trigger (逐列觸發)又是Statement Trigger (敘述語句觸發)。有了Compound Trigger之後,可以為我們大大減低維護上困擾,只需要一個觸發器就可以定義完全部的四個功能,使Compound Trigger可以讓我們同時進行下列四種觸發層級:
●觸發執行語句之前(BEFORE STATEMENT)
●觸發語句中的每一行發生變化之前(BEFORE EACH ROW)
●觸發語句中的每一行發生變化之後(AFTER EACH ROW)
●觸發執行語句之後(AFTER STATEMENT)
我們透過實例,進一步了解Compound Trigger,假設要檢查付款金額是否已大於立帳金額,我們可以這麼做:
從上面例子當中可以觀察到,Compound Trigger可以結合兩種類型的Trigger,快速且有效的從每一筆資料異動當中,檢查當前表格沖銷金額是否已大於立帳金額。
此外,Compound Trigger可以協助我們處理大量資料,而在處理大量資料過程當中,我們更可以透過Oracle DB 功能[bulk collect]以及[forall],可協助我們更有效率的進行處理資料,這兩個工具都可以加強SQL引擎到PL/SQL引擎的交换,BULK COLLECT,可以更加快速且有效率的協助DB對數據的檢索,而FORALL,可以幫助改進INSERT、UPDATE和DELETE對於DB操作的效能,其概念如下:
整體而言,Compound Trigger這工具,對於改善DB效能以及降低維護人員負擔扮演著功不可沒的角色,透過文章分享,希望有助於維護人員有不同思維去建構及維護資料。
客户案例
免費諮詢
(02)2521-2589#110
winnie@argotek.com.tw
訂閱/取消電子報
掌握行業趨勢,分享管理議題,與企業共同精進成長,提升企業經營管理能力。
取消電子報
成功!
感謝您訂閱會通電子報
OK
成功!
您已取消訂閱會通電子報
OK