Oracle 視圖是儲存的查詢,邏輯上可視為「虛擬表」。它不佔用儲存空間,資料源自基表動態生成,卻能提供強大的安全隔離、邏輯簡化、應用解耦能力。本文系統梳理視圖核心機制、六大核心用途、運作原理、依賴管理與可更新連接視圖規範。
SELECT 語句,儲存於資料字典(USER_VIEWS)文本形式。INSTEAD OF 觸發器)。WHERE 限制可見行、投影限制可見欄,實現無需 VPD/FGA 的輕量級存取控制。JOIN、複雜衍生欄位封裝於視圖,應用端如操作單表般簡單。USER_DEPENDENCIES)。DROP 後重建:Oracle 檢查新表結構是否滿足視圖定義(欄位名、型別相容),自動標記視圖 VALID/INVALID。連接視圖(FROM 多表)預設多為唯讀。要可更新(INSERT/UPDATE/DELETE),定義中**嚴禁**包含:
UNION、MINUS 等)DISTINCT、聚合/分析函數GROUP BY、ORDER BY、CONNECT BY、START WITHJOIN(但符合「關鍵值保留」條件的內連接/外連接除外)突破方案: 對不可更新視圖,定義 INSTEAD OF 觸發器攔截 DML,手寫邏輯分發至基表,實現業務級可更新性。
V_業務域_用途(如 V_HR_EMP_SALARY_SUMMARY)。MATERIALIZED VIEW)而非普通視圖,配合定時刷新平衡即時性與效能。USER_OBJECTS 篩選 STATUS='INVALID' 視圖,主動修復依賴斷裂。