| 視圖 | 用途 |
| USER/ALL/DBA_CONSTRAINTS | 約束基本資訊:名稱、類型 (C=CHECK, P=PK, R=FK, U=UK)、狀態 (ENABLED/DISABLED) |
| USER/ALL/DBA_CONS_COLUMNS | 約束對應欄位詳細資訊 |
實用查詢範例
-- 查詢所有 CHECK 約束定義
SELECT constraint_name, search_condition
FROM user_constraints
WHERE constraint_type = 'C';
-- 查詢特定表所有約束與欄位
SELECT c.constraint_name, c.constraint_type, cc.column_name, cc.position
FROM user_constraints c, user_cons_columns cc
WHERE c.table_name = 'EMPLOYEES'
AND c.constraint_name = cc.constraint_name
ORDER BY c.constraint_type, c.constraint_name;
最佳實踐
- 業務規則優先在資料庫層用 CHECK 約束強制 (最後防線)
- 命名規範:
CK_表名_欄位_序號 或 CK_表名_業務含義
- 複雜驗證 (跨表、序列檢查) 改用觸發器或應用層
- 定期檢查
DISABLED 狀態約束,避免資料品質風險
- 上一篇文章: Oracle 索引建立策略與類型全解析:B-Tree、Bitmap、Reverse、Function-Based 實戰語法
- 下一篇文章: Oracle 10g Linux 安裝前置作業完整指南:用戶、目錄、核心參數與 sysctl 配置
Copyright ©
程式碼之家 All Rights Reserved