web-dev-qa-db-ja.com

SQL Server2005-2012でUDTに制約を設定する方法

UDTを作成しています:

CREATE TYPE [dbo].[Code]
FROM VARCHAR(20) NOT NULL

RULESとDEFAULTSは非推奨と見なされているため、このタイプから定義された列に特定の文字のみが含まれるように、タイプに制約を設定するための推奨される方法は何ですか?

4
Anil

現在、この種のロジックを真に集中化/カプセル化する唯一の方法(これは、あなたがやろうとしていることだと思います)は、CLRタイプを使用することです。このソリューションが2005年以降で機能することは朗報です。

1つの代替方法は、検証ロジックをUDFに一元化し、UDFを参照する個別のチェック制約を作成することです。まだCLRを使用していない場合は、これが最善の解決策になる可能性があります。

CREATE TYPEは非常に制限されています。システムタイプを参照する場合、それは単なるタイプエイリアスであり、それ以上のものではありません。たとえば、型自体に関連付けられているチェック制約(または同様のもの)を宣言すると便利ですが、これは現在実装されていません。

1
Jon Seigel