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

SQL Server 設定複合主鍵 (聯合主鍵) 標準語法:ALTER TABLE ADD CONSTRAINT

     編輯:關於SqlServer

標準語法

ALTER TABLE 表名
ADD CONSTRAINT PK_表名  -- 慣用 PK_ 前綴
PRIMARY KEY (欄位1, 欄位2, ...);

完整範例

-- 建表 (無主鍵)
CREATE TABLE StudentCourse (
    StudentNo VARCHAR(20) NOT NULL,
    CourseNo  VARCHAR(20) NOT NULL,
    Score     DECIMAL(5,2)
);

-- 新增複合主鍵
ALTER TABLE StudentCourse
ADD CONSTRAINT PK_StudentCourse
PRIMARY KEY (StudentNo, CourseNo);

⚠️ 必須條件

  1. 所有參與主鍵的欄位 必須為 NOT NULL
  2. 組合值 唯一 (資料需先清洗)
  3. 單表 僅能有一個 PRIMARY KEY 約束 (可包含多欄)

相關操作

-- 查看主鍵
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE TABLE_NAME = 'StudentCourse' AND CONSTRAINT_TYPE = 'PRIMARY KEY';

-- 刪除主鍵
ALTER TABLE StudentCourse DROP CONSTRAINT PK_StudentCourse;

-- 修改主鍵 (必須先刪後加)
ALTER TABLE StudentCourse DROP CONSTRAINT PK_StudentCourse;
ALTER TABLE StudentCourse ADD CONSTRAINT PK_StudentCourse PRIMARY KEY (StudentNo, CourseNo, Semester);

複合主鍵 vs 代理鍵 (Surrogate Key) 選型

場景推薦理由
純關聯表 (多對多中間表)複合主鍵 (FK1, FK2)自然唯一、無額外儲存、JOIN 直接用
需被其他表引用 (子表有孫表)代理鍵 IDENTITY/BIGINT單欄 FK 簡潔、避免級聯更新、效能佳
業務鍵穩定、短、不變業務鍵作主鍵語義清晰、省 JOIN
業務鍵長、可變、組合超 3 欄代理鍵 + UNIQUE 業務鍵索引窄、維護易
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved