在關聯式資料庫設計中,完整性約束是確保資料準確性、一致性與可靠性的核心機制。SQL Server 提供了三大類完整性約束:實體完整性、參考完整性與使用者定義完整性。本文將系統整理這些約束的建立、修改與刪除語法,並附上實戰範例,協助開發人員快速掌握資料庫約束的核心操作。
主鍵唯一識別資料表中的每一筆記錄,不允許重複值與 NULL 值。主要有兩種建立方式:
CREATE TABLE 表名
(
Sno INT IDENTITY(1,1),
Sname NVARCHAR(20),
-- 設定主鍵
PRIMARY KEY (Sno)
);
ALTER TABLE 表名
ADD CONSTRAINT PK_表名_Sno
PRIMARY KEY (id);
外鍵建立資料表之間的關聯,確保參考資料的存在性。支援串聯刪除與串聯更新等進階選項。
CREATE TABLE 表名
(
sno INT IDENTITY(1,1) PRIMARY KEY,
cno INT NOT NULL,
FOREIGN KEY (cno) REFERENCES 表名2(Cno)
ON DELETE CASCADE -- 串聯刪除
ON UPDATE CASCADE -- 串聯更新
-- ON DELETE NO ACTION 刪除限制
);
ALTER TABLE 表名
ADD CONSTRAINT FK_表名_表名2
FOREIGN KEY (cid) REFERENCES 表名2(cid);
針對特定業務規則自訂的約束條件,包含四大類型:
ALTER TABLE 表名
ALTER COLUMN name VARCHAR(20) NOT NULL;
ALTER TABLE 表名
ADD CONSTRAINT UQ_表名_列名 UNIQUE(列);
ALTER TABLE 表名
ADD CONSTRAINT CK_表名_列名 CHECK(age > 5);
ALTER TABLE 表名
ADD CONSTRAINT DF_表名_列名 DEFAULT('男') FOR gender;
當約束不再需要時,可透過以下語法移除:
ALTER TABLE 表名 DROP CONSTRAINT DF_表名_列;
掌握完整性約束的靈活運用,能從資料庫層面有效攔截髒資料,減少應用層的驗證邏輯,是資料庫設計與維護的必備技能。