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

Oracle 修改表主鍵標準作法:Drop 再 Add,含儲存參數範例

     編輯:Oracle 資料庫基礎

Oracle 不支援直接 ALTER TABLE ... MODIFY PRIMARY KEY 變更主鍵欄位,標準流程是 先刪除舊主鍵約束,再新增新主鍵約束。本文提供完整腳本範例,含索引儲存參數設定,可直接套用於生產環境變更。

標準兩步驟

  1. 刪除既有主鍵:需知道約束名稱(可查 user_constraints)。
  2. 新增新主鍵:指定欄位、索引表空間、儲存參數。

實戰腳本範例(以 T_SF_SUPPLIER 為例)

-- 1. 刪除舊主鍵
ALTER TABLE T_SF_SUPPLIER DROP CONSTRAINT PK_T_SF_SUPPLIER;

-- 2. 新增新主鍵(含完整儲存參數)
ALTER TABLE T_SF_SUPPLIER
ADD CONSTRAINT PK_T_SF_SUPPLIER PRIMARY KEY (sp_id)
USING INDEX
  TABLESPACE SYSTEM
  PCTFREE 10
  INITRANS 2
  MAXTRANS 255
  STORAGE (
    INITIAL 64K
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
  );

關鍵參數說明

參數用途建議值
TABLESPACE索引存放表空間依規劃,避免放 SYSTEM
PCTFREE區塊預留更新空間 %10(頻繁更新調高)
INITRANS初始交易槽數2~4(高併發調大)
MAXTRANS最大交易槽數255(預設)
STORAGE INITIAL初始程度視資料量,64K~1M
MINEXTENTS / MAXEXTENTS擴展控制1 / UNLIMITED

注意事項

  • 刪除主鍵會同步移除支援該主鍵的唯一索引,若表極大,操作會產生大量 REDO,建議維護時段執行。
  • 若有子表參考此主鍵(Foreign Key),必須先 DISABLE 或 DROP 子表 FK,變更完再 ENABLE / CREATE 回來。
  • 生產環境變更前,務必先在測試環境驗證腳本與應用程式相容性。

查詢現有主鍵約束名稱

SELECT constraint_name, table_name
FROM user_constraints
WHERE constraint_type = 'P'
  AND table_name = 'T_SF_SUPPLIER';

遵循「Drop 再 Add」標準流程,搭配完整儲存參數,即可安全、可控地完成 Oracle 表主鍵變更。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved