如何在 SQL Server 2005 - 2012 中对 UDT 设置约束

Ani*_*nil 5 database-design sql-server datatypes

我正在创建我的 UDT:

CREATE TYPE [dbo].[Code]
FROM VARCHAR(20) NOT NULL
Run Code Online (Sandbox Code Playgroud)

由于 RULES 和 DEFAULTS 被视为已弃用,建议使用什么方法对我的类型设置约束以确保从此类型定义的列仅包含特定字符?

Jon*_*gel 1

目前,真正集中/封装这种逻辑的唯一方法(我假设您正在尝试这样做)是使用 CLR 类型。好消息是该解决方案适用于 2005+。

一种替代方法是将验证逻辑集中到 UDF 中,然后创建引用 UDF 的单独检查约束。如果您尚未使用 CLR,这可能是最好的解决方案。

CREATE TYPE非常有限:当引用系统类型时,它只是一个类型别名,仅此而已。例如,最好声明一个与类型本身关联的检查约束(或类似的东西),但目前尚未实现。