首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle資料庫建表預設值應用實例與最佳實務

     編輯:Oracle 資料庫基礎

在建立資料表時指定 `DEFAULT` 值,能將資料庫設計邏輯與應用程式代碼解耦。未來透過 `ALTER TABLE` 修改預設值,應用程式即刻生效,無需修改代碼重新部署。

關鍵行為規則

  • 只有當 `INSERT`/`MERGE` 未指定欄位值、或顯式使用 `DEFAULT` 關鍵字時,才會套用預設值
  • 未顯式宣告 `DEFAULT` 時,Oracle 隱式預設為 `NULL`
  • Oracle 9i 起支援在 `DEFAULT` 子句使用 `SYSDATE`、`CURRENT_TIMESTAMP`、`USER` 等偽欄位/函數

實戰範例

CREATE TABLE t1 (
  id$        INTEGER NOT NULL,
  charcol    CHAR DEFAULT 'Y',
  datecol    DATE DEFAULT SYSDATE,
  strcol     VARCHAR2(30) DEFAULT USER,
  intcol     INTEGER DEFAULT 12
);

欄位說明

欄位型別預設值應用場景
charcolCHAR'Y'旗標/狀態欄位,預設啟用
datecolDATESYSDATE建立時間戳記,自動記錄插入當下時間
strcolVARCHAR2USER記錄建立資料的資料庫使用者
intcolINTEGER12數值型預設常數

修改預設值範例

-- 將 charcol 預設值從 'Y' 改為 'N'
ALTER TABLE t1 MODIFY (charcol DEFAULT 'N');

-- 移除預設值(恢復為 NULL)
ALTER TABLE t1 MODIFY (intcol DEFAULT NULL);

最佳實務建議

  1. 業務預設值下沉資料庫層: 如「狀態預設啟用」、「建立時間自動取得」等通用邏輯,直接在 DDL 定義,減少應用端判斷
  2. 審計欄位自動填充: `CREATED_BY DEFAULT USER`、`CREATED_DATE DEFAULT SYSDATE` 等,確保資料可追溯性
  3. 避免在 DEFAULT 使用複雜函數: 影響插入效能,複雜邏輯建議改用 Trigger 或應用層處理
  4. 文檔化預設值業務含義: 在資料字典/註釋中說明各預設值的業務意圖,利於維護
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved