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

SQL Server 2008 SSMS 圖形介面建立外來鍵 (Foreign Key) 完整步驟

     編輯:關於SqlServer

操作步驟 (表設計師)

  1. 物件總管:右鍵子表 (含外來鍵欄位的表) → 設計
  2. 點選外來鍵欄位 (如 ParentID)
  3. 右鍵 → 關聯 (Relationships)
  4. 「外來鍵關聯」對話框:點選 加入
  5. 右側屬性:資料表與資料行規格 → 點選右側省略號 (...)
  6. 「資料表與資料行」對話框:
    • 主要索引鍵資料表:選擇父表 (被參考表)
    • 下方格狀:左欄選父表 PK 欄位,右欄選子表 FK 欄位
    • 點選 確定
  7. 回到「外來鍵關聯」:確認名稱、更新/刪除規則 → 確定
  8. 關閉設計師 → 儲存 (Ctrl+S)

T-SQL 等效指令

-- 基本語法
ALTER TABLE dbo.ChildTable 
ADD CONSTRAINT FK_Child_Parent 
FOREIGN KEY (ParentID) REFERENCES dbo.ParentTable (ID);

-- 級聯規則
ALTER TABLE dbo.ChildTable 
ADD CONSTRAINT FK_Child_Parent 
FOREIGN KEY (ParentID) REFERENCES dbo.ParentTable (ID)
ON UPDATE CASCADE      -- 父表 PK 更新 → 子表同步更新
ON DELETE SET NULL;    -- 父表刪除 → 子表 FK 設為 NULL

-- 規則選項:NO ACTION (預設/報錯), CASCADE, SET NULL, SET DEFAULT

外來鍵屬性詳解

屬性說明建議
名稱FK_ChildTable_ParentTable統一命名慣例
啟用檢查既有資料WITH CHECK / WITH NOCHECK新 FK 用 CHECK,遷移髒資料用 NOCHECK 後再清理
啟用複寫Not For Replication合併式複寫時不強制
ON UPDATECASCADE / NO ACTION / SET NULL / SET DEFAULT極少用 CASCADE,謹慎評估
ON DELETECASCADE / NO ACTION / SET NULL / SET DEFAULT視業務:CASCADE (明細同刪), SET NULL (保留明細)

常見問題

  • 資料型別不符:FK 與 PK 型別、長度、精度必須完全一致
  • 既有資料違反:子表有父表不存在的值 → 建立失敗,需先清理或用 NOCHECK
  • 缺少父表索引:父表參考欄位必須有 PK 或 UNIQUE 約束/索引
  • 循環參考:Table A → Table B → Table A,需至少一邊可 NULL

效能建議

  • FK 欄位必須建立索引 (SQL Server 不自動建立),否則刪除/更新父表時需掃描子表全表
  • 大量刪除父表資料時,考慮暫時停用 FK 或分批處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved