SQL Server 2008中的枚举类型?

Vac*_*ano 6 t-sql sql-server enumeration sql-server-2008 enumerated-types

SQL Server中是否存在某种机制以允许类似Enumerated类型的功能?

例如,如果我有一个名为"UpdateStatus"的列,它通常会设置单字母值,如下所示:

  1. d
  2. X
  3. ü
  4. 一世

这可能等同于很多事情.这导致了混乱.另一种方法是让它像这样的字符串列:

  1. 下载
  2. 删除
  3. 更新
  4. 初始化

但这有其自身的问题.最终有人会写这样的东西:( where UpdateStatus = 'Initalized'拼写错误).另外,我听说扼杀弦乐并不是那么高效.

那么,是否有任何类型的SQL Server枚举类型可以帮助解决这个问题?基本上我正在寻找编译时检查被比较的值(即"已初始化")是值列表的一部分.

我正在使用SQL Server 2008.

Phi*_*rie 10

为什么不包含包含代码和描述的查找表.为此查找表创建外键将导致仅使用有效代码.

  • @Vaccano:不,但它可以防止数据修改异常.但是,您只需设置匹配的枚举,如果它是重要的并且在应用程序启动时进行交叉检查.+1. (2认同)

Ale*_*hov 6

除了查找表(FK),在简单的情况下,您可以使用检查约束:

CREATE TABLE my_table ( 
    UpdateStatus VARCHAR2(11) 
      CHECK( UpdateStatus IN ('Downloaded', 'Deleted', 'Updated', 'Initialized'))
)
Run Code Online (Sandbox Code Playgroud)