使用者自訂資料類型 (UDT) 可封裝業務語意、統一長度與精度、集中管理 NULL 屬性,搭配 規則 與 預設值,能在資料庫層強制資料完整性,減少應用程式驗證邏輯。
EXEC sp_addtype
@typename = 'PostalCode', -- 唯一名稱,符合識別碼規則
@phystype = 'char(5)', -- 基礎系統類型,可含長度/精度/小數位
@nulltype = 'NOT NULL', -- 'NULL' | 'NOT NULL' | 'NONULL'
@owner = 'dbo'; -- 選擇性擁有者
資料庫 → 右鍵 屬性 → 使用者定義資料類型 → 新增,視覺化填寫同樣參數。
CREATE RULE rule_EmailFormat
AS
@value LIKE '%_@_%._%'; -- @value 為佔位符,命名任意 (如 @email, @x)
@placeholder 必須以 @ 開頭LIKE 關鍵字為必須,後接模式字串 (支援萬用字元)CREATE DEFAULT def_CreatedDate
AS GETDATE(); -- 可為常數、函數、系統變數
-- 綁定預設值
EXEC sp_bindefault 'def_CreatedDate', 'dbo.Orders.OrderDate';
-- 綁定規則
EXEC sp_bindrule 'rule_EmailFormat', 'dbo.Customers.Email';
EM 中:資料表設計師 → 選取資料行 → 預設值/規則 索引標籤 → 選擇已建立物件。
CREATE TABLE dbo.Employees (
EmpID int PRIMARY KEY,
ZipCode PostalCode NOT NULL, -- 直接使用 UDT
Email varchar(100) NULL
);
-- 此時 ZipCode 自動擁有 char(5) NOT NULL 屬性
-- 仍需額外綁定規則/預設值 (UDT 本身不攜帶規則/預設)
注意:原文內容有重複區塊,已整合去重。SQL Server 2005+ 建議改用 CREATE TYPE、CHECK CONSTRAINT、DEFAULT CONSTRAINT,功能更強且符合 ANSI 標準。