sp_addtypeEXEC sp_addtype
@typename = 'MyType', -- 自訂類型名稱 (唯一、符合識別碼規則)
@phystype = 'VARCHAR(20)', -- 基礎系統類型 (可含長度、精度、小數位)
@nulltype = 'NOT NULL', -- NULL 屬性:'NULL'、'NOT NULL'、'NONULL'
@owner_name = 'dbo'; -- 擁有者 (選填)
資料庫 → 右鍵「屬性」→「使用者自訂資料類型」頁籤 → 新增,操作直觀。
CREATE RULE rule_name AS @placeholder LIKE pattern_string;
@placeholder:空間保留符,必須以 @ 開頭 (如 @val、@code)。LIKE 關鍵字為必填。pattern_string:模式字串,支援萬用字元 %、_、[]、[^]。CREATE RULE rul_Email AS @email LIKE '%_@_%._%'; -- 簡易 Email 格式
CREATE RULE rul_Phone AS @phone LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'; -- 000-0000
CREATE DEFAULT def_name AS constant_expression;
GETDATE()、USER)。CREATE DEFAULT def_CreateDate AS GETDATE();
CREATE DEFAULT def_Status AS 'Active';
-- 繫結預設值
EXEC sp_bindefault 'def_CreateDate', 'TableName.ColumnName';
-- 繫結規則
EXEC sp_bindrule 'rul_Email', 'TableName.ColumnName';
資料表設計師 → 資料行屬性 → 「預設值」/「規則」下拉選單選擇已建立物件。
CREATE TABLE Customers (
CustID INT PRIMARY KEY,
Email MyType, -- 直接使用自訂類型,自動繼承長度、NULL 屬性
Phone VARCHAR(20) -- 也可混用系統類型
);
-- 若 Email 欄位需套用規則/預設值,仍需額外執行 sp_bindrule/sp_bindefault
-- 或在 CREATE TABLE 內直接定義 CHECK 條件約束、DEFAULT 條件約束 (SQL 2000 建議做法)
CHECK (Email LIKE ...),取代 Rule (Rule 已棄用)。DEFAULT GETDATE(),取代 Default 物件。