Oracle 臨時表功能介紹
Oracle中的臨時表是全局的需要在數據庫設計時創建完成而不是程序使用時每個登陸用戶都使用這一個相同的臨時表但互相之間看不到彼此的數據也就是說臨時表是會話獨立的
Oracle 的臨時表分為事務型和會話型
事務型臨時表就是指在事務處理過程中插入的記錄只在事務提交或回滾之前有效一旦事務完成表中的記錄便被自動清除
會話型臨時表指臨時表中的數據在本次會話期間一直有效直到會話結束會話結束後表中針對此次會話的數據會自動清空
Oracle 臨時表的不足之處
不支持lob對象例如 Spatial 的SDO_GEOMETRY這也許是設計者基於運行效率的考慮但實際應用中確實需要此功能時就無法使用臨時表了
不支持主外鍵關系這意味著臨時表
鑒於以上原因灑家設計了一份自定義的臨時表處理辦法使之可以支持Oracle Spatial數據類型和主外鍵關系而且不會出現並發沖突
以常規表的形式創建臨時數據表的表結構但要在每一個表的主鍵中加入一個 SessionID 列以區分不同的會話(可以有lob列和主外鍵)
寫一個用戶注銷觸發器在用戶結束會話的時候刪除本次會話所插入的所有記錄(SessionID等於本次會話ID的記錄)
程序寫入數據時要順便將當前的會話ID(SessionID)寫入表中
程序讀取數據時只讀取與當前會話ID相同的記錄即可
功能增強的擴展設計
可以在數據表上建立一個視圖視圖對記錄的篩選條件就是當前會話的SessionID
數據表中的SessionID列可以通過Trigger實現以實現對應用層的透明性
高級用戶可以訪問全局數據以實現更加復雜的功能
擴展臨時表的優點
實現了與Oracle的基於會話的臨時表相同的功能
支持SDO_GEOMETRY等lob數據類型
支持表間的主外鍵連接且主外鍵連接也是基於會話的
高級用戶可以訪問全局數據以實現更加復雜的功能
From:http://tw.wingwit.com/Article/program/Oracle/201311/18918.html