回答:
そうではありません。あいまいな同等物があります:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
これで私が見つけた最良の解決策は、可能な値を主キーとして持つルックアップテーブルを作成し、ルックアップテーブルへの外部キーを作成することです。
IMHOルックアップテーブルは、参照整合性を備えた方法です。ただし、次のような例に従うことで「悪魔のマジックナンバー」を回避する場合にのみ、 T4を使用してデータベースルックアップテーブルから列挙型を生成します。
楽しんで!
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
パフォーマンスが重要な場合は、ハード値を使用します。
SQL Serverに列挙型を実装したいときに、この興味深いアプローチを見つけました。
以下のリンクで説明されているアプローチは、データベース列挙型のすべてのニーズを2つの中央テーブルで満たすことができることを考えると、非常に説得力があります。