主鍵是關聯式資料庫中唯一識別每筆記錄的核心約束。本文詳細說明 Oracle 中主鍵的建立、啟用、停用與刪除操作,涵蓋單欄位主鍵、複合主鍵及 ALTER TABLE 動態管理的完整語法與實戰範例。
透過範例講解如何建立、刪除、停用與啟用主鍵約束,掌握主鍵管理的完整生命週期。
主鍵能唯一標識資料表中的每一列記錄,可由單一欄位或多欄位組成(複合主鍵)。主鍵欄位不允許空值,且每張表僅能擁有一個主鍵。
注意事項: Oracle 複合主鍵欄位數不超過 32 個。主鍵可在建表時定義,或事後透過 ALTER TABLE 新增。
CREATE TABLE tb_pk_example (
id NUMBER,
name VARCHAR2(50),
description VARCHAR2(300),
CONSTRAINT tb_pk_example_pk PRIMARY KEY (id)
);
CREATE TABLE tb_supplier_ex (
supplier_id NUMBER,
supplier_name VARCHAR2(50),
supplier_description VARCHAR2(300),
contact_name VARCHAR2(50),
CONSTRAINT tb_supplier_ex_pk PRIMARY KEY (supplier_id, supplier_name)
);
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2, ...);
-- 建立員工表與部門表
CREATE TABLE tb_employees (
employee_id NUMBER,
employee_name VARCHAR2(50),
employee_age NUMBER,
employee_birth DATE,
department_id NUMBER
);
CREATE TABLE tb_departments (
department_id NUMBER,
department_name VARCHAR2(100),
location VARCHAR2(300)
);
-- 新增單欄位主鍵
ALTER TABLE tb_employees
ADD CONSTRAINT tb_employees_pk PRIMARY KEY (employee_id);
-- 新增複合主鍵
ALTER TABLE tb_departments
ADD CONSTRAINT tb_departments_pk PRIMARY KEY (department_id, department_name);
ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
ALTER TABLE tb_employees DISABLE CONSTRAINT tb_employees_pk;
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;
ALTER TABLE tb_employees ENABLE CONSTRAINT tb_employees_pk;
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
ALTER TABLE tb_employees DROP CONSTRAINT tb_employees_pk; ALTER TABLE tb_departments DROP CONSTRAINT tb_departments_pk; ALTER TABLE tb_pk_example DROP CONSTRAINT tb_pk_example_pk; ALTER TABLE tb_supplier_ex DROP CONSTRAINT tb_supplier_ex_pk;
若有問題或代碼錯誤,歡迎指正。
聯絡信箱:david.louis.tian@outlook.com
版權聲明:轉載請註明出處。