相当于MySQL枚举数据types的SQL Server?
SQL Server 2008有一个像MySQL的enum
数据types?
它不。 有一个模糊的等价物:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
我在这里find的最好的解决scheme是创build一个可能的值作为主键的查找表,并创build查找表的外键。
恕我直言,查找表是要走的路,具有参照完整性。 但是,只有当你通过下面的例子来避免“邪恶的魔法数字”: 使用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中实现枚举时find了这个有趣的方法。
下面在链接中提到的方法是相当有吸引力的,考虑到所有的数据库枚举需求可以用2个中心表来满足。