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