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

SQL Server 2000 使用者自訂資料類型完整指南:建立、規則、預設值、繫結與套用

     編輯:關於SqlServer

一、建立使用者自訂資料類型

方法 1:系統預存程序 sp_addtype

EXEC sp_addtype 
    @typename = 'MyType',           -- 自訂類型名稱 (唯一、符合識別碼規則)
    @phystype = 'VARCHAR(20)',      -- 基礎系統類型 (可含長度、精度、小數位)
    @nulltype = 'NOT NULL',         -- NULL 屬性:'NULL'、'NOT NULL'、'NONULL'
    @owner_name = 'dbo';            -- 擁有者 (選填)

方法 2:企業管理器圖形介面

資料庫 → 右鍵「屬性」→「使用者自訂資料類型」頁籤 → 新增,操作直觀。

二、建立規則 (Rule):限制資料域值

語法

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

三、建立預設值 (Default)

語法

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 建議做法)

現代替代方案建議 (SQL Server 2005+)

  • 使用者定義型別 (UDT):CLR 整合建立強型別,支援方法、屬性、序列化。
  • 條件約束 (CHECK CONSTRAINT):直接在資料表定義 CHECK (Email LIKE ...),取代 Rule (Rule 已棄用)。
  • 預設條件約束 (DEFAULT CONSTRAINT):直接在資料表定義 DEFAULT GETDATE(),取代 Default 物件。
  • Rule/Default 為相容性保留,新開發請改用條件約束。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved